Python Pandas dataframe按列表元素匹配累计求和生成新列
解决方案
实现思路
- 先把存储列表的
Column1拆分为多行,统计每个元素对应所有行的Column2值总和,生成元素-总和映射关系 - 遍历每行的
Column1列表,将列表内所有元素对应的总和相加,得到Column3
完整代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'Column1': [['a','b','c','d'], ['a','f','g'], ['b','c'], ['a','c','d']], 'Column2': [4, 3, 6, 5] }) # 第一步:计算每个元素对应的Column2总和 element_total = df.explode('Column1').groupby('Column1')['Column2'].sum() # 第二步:计算每行的Column3 df['Column3'] = df['Column1'].apply(lambda x: sum(element_total[item] for item in x)) print(df)
输出结果
Column1 Column2 Column3 0 [a, b, c, d] 4 46 1 [a, f, g] 3 18 2 [b, c] 6 25 3 [a, c, d] 5 36
注:你问题描述里给出的预期结果存在手动计算误差,上述输出是严格按照你描述的规则计算得到的正确结果。
内容的提问来源于stack exchange,提问作者adsasf
相关产品推荐
相关产品推荐

