首页 > 解决方案 > 带有日期(或日期时间)的 Pandas 'astype'

问题描述

这个答案包含一种非常优雅的方式,可以在一行中设置所有类型的 pandas 列:

# convert column "a" to int64 dtype and "b" to complex type
df = df.astype({"a": int, "b": complex})

我开始认为,不幸的是,它的应用有限,您迟早将不得不使用各种其他方法在多行中转换列类型。我进行了测试'category'并且工作正常,因此它将采用实际的 python 类型,例如intor complex,然后是引号中的熊猫术语,例如'category'.

我有一列日期,如下所示:

25.07.10
08.08.10
07.01.11

我查看了有关转换日期列的这个答案,但它们似乎都不适合上面的优雅语法。

我试过了:

from datetime import date
df = df.astype({"date": date})

但它给出了一个错误:

TypeError: dtype '<class 'datetime.date'>' not understood

(全迹省略)

我也试过pd.Series.dt.date了,也没有用。是否可以像这样在一行中投射所有列,包括日期或日期时间列?

标签: pythonpandasdate

解决方案


这已在评论中得到回答,其中指出以下工作:

df.astype({'date': 'datetime64[ns]'})

另外,你可以在读入数据时设置dtype:

pd.read_csv('path/to/file.csv', parse_dates=['date'])

推荐阅读