我对pandas to_datetime
在非美国日期的行为感到困惑。
在这个简单的例子中,Pandas正确地推断出第2和第3行的月份,但在第1和第4行失败。
显然,它将第2行和第3行视为dd/mm/yyyy
个日期(因为13和27显然可以是几个月),但将剩余日期视为mm/dd/yyyy
。
我的期望是to_datetime
将推断整个系列,然后将每个条目视为相同。
import pandas as pd
results = pd.DataFrame()
european_dates = pd.Series(['05/04/2007', # <-- April 5th, 2007
'13/04/2006', # <-- April 13th, 2006
'27/12/2014', # <-- December 27th, 2014
'02/07/2010']) # <-- July 2nd, 2010
# note: the same happens with infer_datetime_format=False
inferred_dates = pd.to_datetime(european_dates,
infer_datetime_format=True)
results['day'] = inferred_dates.dt.day
results['month'] = inferred_dates.dt.month
results['year'] = inferred_dates.dt.year
results
注意:我知道to_datetime
有一个dayfirst
参数和一个format
参数,我的问题主要是为什么infer_datetime_format
在如此微不足道的情况下失败了。
答案 0 :(得分:0)
在dayfirst
to_datetime
european_dates = pd.Series(['05/04/2007', # <-- April 5th, 2007
'13/04/2006', # <-- April 13th, 2006
'27/12/2014', # <-- December 27th, 2014
'02/07/2010']) # <-- July 2nd, 2010
inferred_dates = pd.to_datetime(european_dates,dayfirst =True)
results = pd.DataFrame()
results['day'] = inferred_dates.dt.day
results['month'] = inferred_dates.dt.month
results['year'] = inferred_dates.dt.year
results
Out[109]:
day month year
0 5 4 2007
1 13 4 2006
2 27 12 2014
3 2 7 2010