这个答案提供了一种非常优雅的方法,可以在一行中设置pandas列的所有类型:
# convert column "a" to int64 dtype and "b" to complex type
df = df.astype({"a": int, "b": complex})
我开始认为这种方法的应用有限,你将不得不在许多行中尽快使用各种其他列类型转换的方法。我测试了 'category'
,它可以正常工作,因此它会接受实际的 Python 类型,如int
或complex
,然后是带引号的 Pandas 术语,如'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
,但它也没有起作用。是否有可能像这样在一行中转换包括日期或日期时间列在内的所有列?
df
的?如果是通过 CSV 读取的话,你可以简单地使用dtypes
参数来显式设置每一列的dtype
。 - tidakdiinginkanread_csv
中,但仍然有人认为在一行之后仍然是可能的。 - cardamomdate
dtype
, 但是你可以使用以下相同的语法将其转换为datetime
-df = df.astype({'date': 'datetime64[ns]'})
。 当你使用pd.to_datetime(df['date']).dt.date
将一个object
转换为date
时,其dtype
仍为object
。 - tidakdiinginkan