如何根据pd.DataFrame对应行time_window值将对应score添加到列表
报错原因
你触发报错的核心原因有两个:
topics_data['time_window'] == '0h-4h'返回的是整个time_window列对应的布尔Series(每一行都返回一个True/False的判断结果),Python原生的if判断无法直接确定一个序列的整体布尔值,因此抛出该歧义错误。- 你写的
for score in topics_data迭代逻辑错误:直接遍历Pandas DataFrame默认返回的是列名字符串,根本不是每行的score字段值。
最优实现方案
完全不需要写循环,用Pandas内置的布尔索引筛选即可,性能远高于自定义循环,代码也更简洁:
avg_04 = topics_data.loc[topics_data['time_window'] == '0h-4h', 'score'].tolist()
上述代码会先筛选出time_window等于0h-4h的所有行,再提取这些行的score列,最后直接转为列表格式。
循环写法(仅做参考,不推荐)
如果你确实需要用for循环实现,要改为迭代DataFrame的每行数据,示例如下:
avg_04 = [] for _, row in topics_data.iterrows(): if row['time_window'] == '0h-4h': avg_04.append(row['score'])
内容的提问来源于stack exchange,提问作者acidsh0t
相关产品推荐
相关产品推荐

