Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫将列文本拆分为多列_Python_Pandas_Date_Dataframe_Split - Fatal编程技术网

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