带有日期(或日期时间)的 Pandas 'astype'

car*_*mom 2 python date pandas

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

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

我开始认为不幸的是,它的应用有限,您迟早将不得不使用各种其他方法在多行上转换列类型。我测试过'category'并且有效,因此它将采用实际的 python 类型,如intcomplex,然后是带引号的熊猫术语,如'category'.

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

25.07.10
08.08.10
07.01.11
Run Code Online (Sandbox Code Playgroud)

我查看了有关强制转换日期列的答案,但似乎没有一个符合上面的优雅语法。

我试过:

from datetime import date
df = df.astype({"date": date})
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:

TypeError: dtype '<class 'datetime.date'>' not understood
Run Code Online (Sandbox Code Playgroud)

(省略整个痕迹)

我也试过pd.Series.dt.date哪个也没用。是否可以像这样将所有列(包括日期或日期时间列)转换为一行?

joe*_*lom 5

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

df.astype({'date': 'datetime64[ns]'})
Run Code Online (Sandbox Code Playgroud)

此外,您可以在读入数据时设置 dtype:

pd.read_csv('path/to/file.csv', parse_dates=['date'])
Run Code Online (Sandbox Code Playgroud)