如何基于列名将DataFrame中含DATE的列从浮点型转为整型?
解决方法
首先,你原来的代码存在两个关键问题:
df.columns.str.contains('DATE')返回的是一个布尔数组,不能直接用if判断,这样会触发ValueError- 你操作的是
df.columns(列名)而不是DataFrame里的数据,逻辑完全错误
正确的做法是先筛选出所有名称包含'DATE'的列,再对这些列的数据做类型转换:
# 第一步:筛选出所有名称含'DATE'的列 date_columns = df.columns[df.columns.str.contains('DATE')] # 第二步:将这些列的浮点型数据转为整型 df[date_columns] = df[date_columns].astype(int)
如果你的数据里存在缺失值(比如NaN),直接用astype(int)会报错,这时候可以用支持空值的整型类型Int64(注意大写I):
df[date_columns] = df[date_columns].astype('Int64')
或者先填充缺失值再转换(比如用0填充):
df[date_columns] = df[date_columns].fillna(0).astype(int)
内容的提问来源于stack exchange,提问作者Angie
相关产品推荐
相关产品推荐

