我正在举一个玩具示例,但它会帮助我了解我正在尝试做的其他事情的情况。假设我想要一个数据框“optimal_fruit”中的新列,即苹果 * 橙色 - 香蕉。
我可以做这样的事情来得到它。
df2['optimal_fruit'] = df2['apples'] * df2['oranges'] - df2['bananas']
apples oranges bananas optimal_fruit
1 6 11 -5
2 7 12 2
3 8 13 11
4 9 14 22
5 10 15 35
如果我尝试做这样的事情会发生什么?我怎么能在列表理解中做到这一点?
df2['optimal_fruit'] = [x * y - z for x in df2['apples'] for y in df2['oranges'] for z in df2['bananas']]
我收到以下错误:
ValueError:值的长度与索引的长度不匹配
一如既往,非常感谢大家的帮助!
原文由 WhitneyChia 发布,翻译遵循 CC BY-SA 4.0 许可协议
本质上,您的列表理解语句是一组 3 个嵌套循环。在代码中:
结果列表的长度将是 DataFrame 长度的 3 倍。因此错误。要修复,您需要相当于:
在列表理解方面: