具有自动日期解析的字典中的DataFrame

时间:2019-05-10 19:30:33

标签: python pandas date dataframe

我正在根据字典序列创建Pandas DataFrame。 字典很大,有些不同。 一些字段是日期。

我想自动检测并解析日期字段。 这可以通过

df0 = pd.Dataframe.from_dict(dicts)
df0.to_csv('tmp.csv', index=False)
df = pd.read_csv('tmp.csv', parse_dates=True)

我想找到一种更直接的方法。

1 个答案:

答案 0 :(得分:3)

pd.to_datetimeerrors='ignore'一起使用

  • 仅使用dtype == objectselect_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)