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
我是 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