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
给定以下数据框,该数据框来自导入杂乱的 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