You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas仅对DataFrame指定列执行pct_change生成新列的问题求助

报错原因

你触发类型错误的核心是pct_change()的axis参数设置错误:

  • axis=1代表沿列方向做计算,即对同一行的不同列之间做百分比变化推导,调用时会遍历全表所有列参与运算。哪怕你最终只取engagement_sentiment_score列的结果,只要DataFrame中存在字符串类型的其他列,运算过程中就会触发字符串相除的类型错误,和engagement_sentiment_score本身是不是float类型无关。
  • 日度百分比变化是同一列相邻行的对比,默认参数axis=0(沿行方向计算)才符合你的需求,不需要主动设置axis=1。
解决方案

方案1(推荐):仅针对目标列计算

直接对engagement_sentiment_score单列调用pct_change(),完全规避其他列的类型影响,运算效率更高:

Bit['Daily % Sentiment Change'] = Bit['engagement_sentiment_score'].pct_change()

方案2:全表计算前先筛选数值列

如果你需要同时计算多列的日度变化,可以先筛选出全表的数值类型列再调用方法:

# 提取所有数值列
num_cols = Bit.select_dtypes(include=['int', 'float']).columns
# 仅对数值列计算百分比变化
Bit['Daily % Sentiment Change'] = Bit[num_cols].pct_change()['engagement_sentiment_score']
校验建议

修改后如果仍有异常,可以执行print(Bit.dtypes)输出所有列的类型,确认是否存在数值列被隐式转换为object类型的情况。

内容的提问来源于stack exchange,提问作者J. Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:21:02