熊猫会更改所有列上的列数据类型

时间:2019-01-24 15:59:49

标签: python pandas datetime

我的熊猫数据框中有100多个列。

我想动态地解析每一列并更改列的数据类型。

例如,如果列名上带有日期,则将列更改为日期类型,否则将列转换为str。

类似的事情对我有用,

df['Sasd Date'] = df['Sasd Date'].dt.date
df['Sasd'] = df['Sasd'].astype(str)

但是我想对所有具有上述条件的列进行动态处理,而不必提及列名。

1 个答案:

答案 0 :(得分:2)

no such thingstr系列dtype。字符串通常以object dtype系列存储,这是从CSV文件/ Excel将数据读取到数据框中时的默认行为。

因此,仅考虑日期,可以使用布尔索引:

date_cols = df.columns.str.contains('date', case=False, regex=False)
df[date_cols] = df[date_cols].apply(pd.to_datetime, errors='coerce')

object值的datetime.date dtype系列为not recommended,但可以通过自定义函数来实现:

df[date_cols] = df[date_cols].apply(lambda s: pd.to_datetime(s, errors='coerce').dt.date)