This answer包含了一种非常优雅的方式,可以在一行中设置所有类型的pandas列:
# convert column "a" to int64 dtype and "b" to complex type
df = df.astype({"a": int, "b": complex})
我开始认为,不幸的是,它的应用有限,您将不得不使用其他各种方法来转换列类型,或早或晚,跨越许多行。我测试了'category'
,它起作用了,所以它将接受像int
或complex
这样的实际python类型,然后像'category'
这样用引号括起来的pandas术语。
我有一列日期,看起来像这样:
25.07.10
08.08.10
07.01.11
我看过关于转换日期列的this answer,但它们似乎都不符合上面的优雅语法。
我试过了:
from datetime import date
df = df.astype({"date": date})
但它给出了一个错误:
TypeError: dtype '<class 'datetime.date'>' not understood
(忽略整个跟踪)
我也尝试过pd.Series.dt.date
,它也不起作用。是否可以在一行中转换所有列,包括date或datetime列?
发布于 2020-09-27 03:54:23
评论中已经回答了这个问题,其中指出了以下工作:
df.astype({'date': 'datetime64[ns]'})
此外,您还可以在读取数据时设置数据类型:
pd.read_csv('path/to/file.csv', parse_dates=['date'])
https://stackoverflow.com/questions/61330414
复制相似问题