繁体   English   中英

我如何按 ID 分组并相互添加列

[英]How can i groupby ID and add columns to each other

     id  volume   location_ 10   location_ 100  location_ 1000  location_ 1002  location_ 1005  
0   14121   19  0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
1   14121   19  0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
2   14121   19  0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
3   14121   19  0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
4   9320    200 0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
5   9320    116 0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
6   9320    200 0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
7   9320    116 0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0

我有这样的df。 我想对 ID 进行分组,我必须找到类似的东西。 14121 中有 4 个 id,它们的总和是 76。我该怎么做?

   id    0  1  2  3  4  5  6  7 ... vol
0 14121  0  0  0  0  0  0  0  0 ...  76
1 9329   0  0  0  0  0  0  0  0 ... 632
2 14934  0  0  0  0  0  0  0  0 ...   4

我不确定位置列是什么。 以下是获取 id 总和的方法。

import pandas as pd
df = pd.DataFrame({'id':[14121,14121,14121,14121,9320,9320,9320,9320,14934,14934,14934,14934],
                   'volume':[19,19,19,19,200,116,200,116,1,1,1,1]})
print (df)
print (df.groupby('id')['volume'].sum())

输入 DataFrame:

       id  volume
0   14121      19
1   14121      19
2   14121      19
3   14121      19
4    9320     200
5    9320     116
6    9320     200
7    9320     116
8   14934       1
9   14934       1
10  14934       1
11  14934       1

Output DataFrame:

id
9320     632
14121     76
14934      4

或者你也可以给:

print (df.groupby('id').agg(vol_sum = ('volume','sum')).reset_index())

Output 将是:

      id  vol_sum
0   9320      632
1  14121       76
2  14934        4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM