修复ValueError:提取Sentiment Score>0的Symbol数据失败
解决方案
错误原因
iloc使用错误:iloc是基于整数位置的索引,不能直接传入列名(比如'Sentiment Score')。你写的df_strong_sell.iloc[[i+1,'Sentiment Score']]会把列名当成字符串去转数值,直接触发ValueError。- 冗余循环:Pandas 本身支持向量化操作,手动遍历行既低效又容易出错,完全没必要。
高效修复代码
直接用布尔索引筛选符合条件的行,再提取Symbol列即可,这是Pandas的标准用法:
# 筛选 Sentiment Score > 0 的行,提取对应 Symbol 并转成列表 df_sellable = df_strong_sell[df_strong_sell['Sentiment Score'] > 0]['Symbol'].tolist()
如果需要保留DataFrame结构(而非列表),去掉.tolist()即可:
# 得到只包含符合条件 Symbol 的DataFrame filtered_df = df_strong_sell[df_strong_sell['Sentiment Score'] > 0][['Symbol']]
原代码的手动修复(不推荐,仅作参考)
如果一定要用循环实现,需要把iloc改成loc(按行标签+列名访问),同时简化判断逻辑:
df_sellable = [] # 用 iterrows() 遍历行更清晰 for idx, row in df_strong_sell.iterrows(): if row['Sentiment Score'] > 0: df_sellable.append(row['Symbol'])
额外说明
原代码里把Sentiment Score乘1000000再转int的操作完全多余,直接用原始浮点数值判断>0就可以,既简洁又避免类型转换错误。
内容的提问来源于stack exchange,提问作者user20169570
相关产品推荐
相关产品推荐

