如何对具有重复Key1 Key2对的记录的数据字段求和,并以具有唯一Key1 Key2对的记录结束

时间:2016-10-10 18:48:56

标签: pandas dataframe sum duplicates key

给定具有未指定数量的记录且具有重复密钥1和1的数据帧。 key2对,但不一定是相同的数据。 (即,Key1和Key2的组合是非唯一的。) 我需要为重复的记录添加相应的数据列,最后得到具有唯一key1& amp;记录的记录。 key2值。 我已经浏览了网页,但我能找到的是关于删除重复记录的帖子,而且我没有重复记录,我有重复密钥1和记录的记录。 key2对。

以下代码应简化并说明我正在寻找的内容:

import pandas as pd

data={'key1':[1,2,3,1,2,3,2,2],'key2':[2,2,1,2,2,4,2,2],'data':[5,6,2,6,1,6,2,8]}

frame=pd.DataFrame(data,columns=['key1','key2','data'])

print frame

     key1  key2  data

0     1     2     5

1     2     2     6

2     3     1     2

3     1     2     6

4     2     2     1

5     3     4     6

6     2     2     2

7     2     2     8

记录0和3具有重复的Key1和Key2对“1”和& “2”

记录1,4,6和7具有重复的key1和key2对“2”& “2”

我需要结束以下内容:(所有key1& Key2对唯一,数据汇总)

     key1  key2  data
0     1     2    11     (11 = 5+6, sum of data from Records 0 and 3)

1     2     2     17    (17 = 6+1+2+8, sum of data from Records 1, 4, 6, and 7)

2     3     1     2

3     3     4     6

2 个答案:

答案 0 :(得分:1)

正如MaxU所说,您可以使用groupby然后使用sum()方法:

frame.groupby(['key1', 'key2'])['data'].sum().reset_index()
Out[12]: 
   key1  key2  data
0     1     2    11
1     2     2    17
2     3     1     2
3     3     4     6

答案 1 :(得分:0)

无需使用参数as_index=False - reset_index汇总sum的解决方案:

print (frame.groupby(['key1', 'key2'], as_index=False)['data'].sum())
   key1  key2  data
0     1     2    11
1     2     2    17
2     3     1     2
3     3     4     6