Pandas 拆分混合类型并获取第一个元素

Pandas Split Mixed Type And Get First Element

给定以下数据框,该数据框来自导入杂乱的 Excel 电子表格:

import pandas as pd
df=pd.DataFrame({'A':['a','b','c'],
        'dates':['2015-08-31 00:00:00','2015-08-24 00:00:00','8/3/2015, 1/4/16']})

try:
    df['dates']=df['dates'].astype('datetime64[ns]')
except:
    pass
df

    A   dates
0   a   2015-08-31 00:00:00
1   b   2015-08-24 00:00:00
2   c   8/3/2015, 1/4/16

我想拆分存在多个日期的地方,只取第一个这样的:

    A   dates
0   a   2015-08-31 00:00:00
1   b   2015-08-24 00:00:00
2   c   8/3/2015

我希望它能将结果转换成同样的格式:

    A   dates
0   a   2015-08-31 00:00:00
1   b   2015-08-24 00:00:00
2   c   2015-08-03 00:00:00

提前致谢!

您可以将 to_datetime().str.split() 结合使用:

In [215]: pd.to_datetime(df.dates.str.split(',\s*').str[0])
Out[215]:
0   2015-08-31
1   2015-08-24
2   2015-08-03
Name: dates, dtype: datetime64[ns]

In [216]: df['dates'] = pd.to_datetime(df.dates.str.split(',\s*').str[0])

In [217]: df
Out[217]:
   A      dates
0  a 2015-08-31
1  b 2015-08-24
2  c 2015-08-03

dtypes:

In [219]: df.dtypes
Out[219]:
A                object
dates    datetime64[ns]
dtype: object