Python 更改所有列上的列数据类型

Python 更改所有列上的列数据类型,python,pandas,datetime,Python,Pandas,Datetime,我的pandas数据框中有100多列 我想动态解析每一列并更改该列的数据类型 例如,如果列名上有日期,则将列更改为日期类型,否则将列转换为str 像这样的东西对我有用 df['Sasd Date'] = df['Sasd Date'].dt.date df['Sasd'] = df['Sasd'].astype(str) 但是我想对具有上述条件的所有列动态执行此操作,而不提及列名。有as-str-series-dtype。字符串通常存储在对象数据类型系列中,这是从CSV文件/Excel将数据读

我的pandas数据框中有100多列

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

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

像这样的东西对我有用

df['Sasd Date'] = df['Sasd Date'].dt.date
df['Sasd'] = df['Sasd'].astype(str)
但是我想对具有上述条件的所有列动态执行此操作,而不提及列名。

有as-str-series-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')
datetime.date值的对象数据类型系列为,但可以通过自定义函数:

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

你能进一步解释一下吗:如果列名上有日期?你的意思是标签字符串中有“date”吗?是的,你是对的“date”或“date”或“date”…@Sid29请提供一些列名,包括那些有日期的列名。我不是寻找pd.to_datetime,而是寻找dt.date,因为datetime将00:00添加到date@Sid29,并强制将该数据类型日期应用于我的数据帧。因为,我提到的这句话对我很有用。通过函数什么的?