【发布时间】:2019-02-14 01:11:44
【问题描述】:
所以,我环顾四周,并没有找到这个问题的答案。如果它确实存在,我深表歉意。
我有一个看起来像这样的 DF:
a = pd.DataFrame({'Name': ['apple', 'banana', 'orange', 'apple', 'banana','orange'],
'Units': [2,4,6,5,4,3]})
我也有一个这样的列表:
b = [['apple', 'banana'],['orange']]
我们的目标是将苹果和香蕉归为 1 列,将橙色归为另一列,并将它们各自的单位相加。列中的变量将显示为子列表中的第一项。 (没有子列表会有重复)。
这是我希望输出 df 的样子:
output = pd.DataFrame({'Name': ['apple', 'orange'],
'Units': [15, 9]})
这是我现在的位置:
for fruit in a['Name']:
for sublist in b:
if fruit in sublist:
pd.concat([XYZ,
pd.DataFrame({'Name': sublist[0], 'Units': a[a.Name == fruit]['Units'].sum(), index=[0})],
axis=1)
XYZ 是一个空数据框,其中包含我试图用结果填充的列 = 名称和单位。当水果在子列表中及其单位的总和时,我真的不明白如何创建数据框。
有什么想法吗? :D
编辑:子列表可以是 1 到 300 个项目。这里的代码只是一个更大的数据争论问题的 MWE。很抱歉没有提到这一点。
【问题讨论】: