我正在根据字典序列创建Pandas DataFrame。 字典很大,有些不同。 一些字段是日期。
我想自动检测并解析日期字段。 这可以通过
df0 = pd.Dataframe.from_dict(dicts)
df0.to_csv('tmp.csv', index=False)
df = pd.read_csv('tmp.csv', parse_dates=True)
我想找到一种更直接的方法。
答案 0 :(得分:3)
pd.to_datetime
与errors='ignore'
一起使用dtype == object
在select_dtypes
的列上使用。这样可以防止将数字列转换为荒谬的日期。'ignore'
如果遇到任何错误,将放弃转换尝试。combine_first
代替update
,因为update
保留了初始的dtypes
。由于它们是对象,所以这会弄糟。df.select_dtypes(include=object).apply(pd.to_datetime, errors='ignore').combine_first(df)
date0 date1 feuxdate notadate
0 2019-01-01 NaT NaN NaN
1 NaT NaT 0.0 NaN
2 NaT NaT NaN hi
3 NaT 2019-02-01 NaN NaN
使用assign
处理dtypes
df.assign(**df.select_dtypes(include=object).apply(pd.to_datetime, errors='ignore'))
dicts = [
{'date0': '2019-01-01'},
{'feuxdate': 0},
{'notadate': 'hi'},
{'date1': '20190201'}
]
df = pd.DataFrame.from_dict(dicts)