pandas中同结构DataFrame相减报字符串不支持减法错误如何解决
问题原因
你遇到的两个问题根因分别是:
- 相减报错的核心原因是 DataFrame单元格存储的是字符串类型,而非数值类型,和列索引的name属性
delay_ist没有关联 - 列索引的name可以直接赋值
None删除,不存在无法删除的情况
解决步骤
1. 批量转换两个DataFrame的单元格为数值类型
使用pd.to_numeric做批量转换,可兼容处理异常非数值内容:
import pandas as pd # 转换df_1所有列为浮点型,无法转换的内容会被替换为NaN df_1 = df_1.apply(pd.to_numeric, errors='coerce') # 转换df_2所有列为浮点型 df_2 = df_2.apply(pd.to_numeric, errors='coerce')
如果确认所有单元格内容都是合法数值,可以删除errors='coerce'参数。
2. (可选)删除列索引的name属性
直接对columns的name属性赋值为空即可:
df_1.columns.name = None df_2.columns.name = None
3. 执行相减操作
转换完成后即可正常执行减法计算:
df = df_1 - df_2
验证方式
转换后可以执行以下代码确认数据类型是否正确:
print(df_1.dtypes) print(df_2.dtypes)
输出结果如果为float64则说明转换成功,不会再触发类型错误。
内容的提问来源于stack exchange,提问作者Sca
相关产品推荐
相关产品推荐

