Python 熊猫将列文本拆分为多列
如何将列值拆分为两个新列: 数据: 输入:Python 熊猫将列文本拆分为多列,python,pandas,date,dataframe,split,Python,Pandas,Date,Dataframe,Split,如何将列值拆分为两个新列: 数据: 输入: df[['CO','WO Date',WO ID']] = df.pop('WO No').str.split('-', expand=True) 预期产出: CO WO Date #as dd/mm/yyyy date format OR 22/04/2018 输出 C0 W0 Date 0 OR 22/04/2018 这是使用矢量化功能的一种方法 df = pd.DataFrame({'WO No': ['
df[['CO','WO Date',WO ID']] = df.pop('WO No').str.split('-', expand=True)
预期产出:
CO WO Date #as dd/mm/yyyy date format
OR 22/04/2018
输出
C0 W0 Date
0 OR 22/04/2018
这是使用矢量化功能的一种方法
df = pd.DataFrame({'WO No': ['OR-20180422-12345']})
df[['CO', 'WO Date', 'WO ID']] = df['WO No'].str.split('-', expand=True)
df['WO Date'] = pd.to_datetime(df['WO Date']).dt.strftime('%d/%m/%Y')
df = df[['CO', 'WO Date']]
print(df)
# CO WO Date
# 0 OR 22/04/2018
您可以使用str.split:
设置:
使用提取器
df = str.extractall("(?P<CO>[A-Z]{2})-(?P<WOdate>\d{8})-\d+").reset_index(drop=True)
输出:
此解决方案更好,因为它避免了应用。美好的
df = pd.DataFrame({'WO No': ['OR-20180422-12345']})
df[['CO', 'WO Date', 'WO ID']] = df['WO No'].str.split('-', expand=True)
df['WO Date'] = pd.to_datetime(df['WO Date']).dt.strftime('%d/%m/%Y')
df = df[['CO', 'WO Date']]
print(df)
# CO WO Date
# 0 OR 22/04/2018
def split_it(s):
return pd.Series({'CO': s[0], 'WO Date': pd.to_datetime(s[1])})
>>> df['WO no'].str.split('-').apply(split_it)
CO WO Date
0 OR 2018-04-22
s = pd.Series(data="OR-20180422-12345")
df = str.extractall("(?P<CO>[A-Z]{2})-(?P<WOdate>\d{8})-\d+").reset_index(drop=True)
df['WOdate'] = df['WOdate'].apply(pd.to_datetime);df
CO WOdate
0 OR 2018-04-22