我的熊猫数据框中有100多个列。
我想动态地解析每一列并更改列的数据类型。
例如,如果列名上带有日期,则将列更改为日期类型,否则将列转换为str。
类似的事情对我有用,
df['Sasd Date'] = df['Sasd Date'].dt.date
df['Sasd'] = df['Sasd'].astype(str)
但是我想对所有具有上述条件的列进行动态处理,而不必提及列名。
答案 0 :(得分:2)
有no such thing个str
系列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)