Pandas:根据一定条件添加值

Pandas: Add the value based on certain conditions

我是 Pandas 的新手。我有一个看起来像这样的数据框。

Name Storage Location Total Quantity
a S1 100
a S2 200
a S3 300
a S4 110
a S5 200
b S1 200
b S2 300
b S4 400
b S5 150
c S1 400
c S5 500

我想将“总数量”组与名称特定存储位置[=27]相加=] 只有“S1,S2,S3”。

Name Total Quantity
a 600
b 500
c 400

我想要的输出类似于上面的内容。 非常感谢你们的帮助。提前致谢!

使用:

In [2378]: out = df[df['Storage Location'].isin(['S1', 'S2', 'S3'])].groupby('Name')['Total Quantity'].sum().reset_index()

In [2379]: out
Out[2379]: 
  Name  Total Quantity
0    a             600
1    b             500
2    c             400

您可以使用 where 将不需要的 Locations 替换为 NaN 并使用 groupby + sum(因为 sum 默认跳过 NaN):

out = df.where(df['Storage Location'].isin(['S1','S2','S3'])).groupby('Name', as_index=False)['Total Quantity'].sum()

输出:

  Name  Total Quantity
0    a           600.0
1    b           500.0
2    c           400.0