Pandas 如何对具有重复Key1 Key2对的记录的数据字段求和,并以具有唯一Key1 Key2对的记录结束
给定一个数据帧,该数据帧具有重复的key1和key2对,但不一定是相同的数据,且记录数不确定。(即,键1和键2的组合是非唯一的。) 我需要为复制的记录添加相应的数据列,并最终得到具有唯一key1和key2值的记录。 我在网上搜索过,但我能找到的只是关于删除重复记录的帖子,我没有重复记录,我有重复键1和键2对的记录 下面的代码应该可以简化并说明我要查找的内容:Pandas 如何对具有重复Key1 Key2对的记录的数据字段求和,并以具有唯一Key1 Key2对的记录结束,pandas,dataframe,sum,duplicates,key,Pandas,Dataframe,Sum,Duplicates,Key,给定一个数据帧,该数据帧具有重复的key1和key2对,但不一定是相同的数据,且记录数不确定。(即,键1和键2的组合是非唯一的。) 我需要为复制的记录添加相应的数据列,并最终得到具有唯一key1和key2值的记录。 我在网上搜索过,但我能找到的只是关于删除重复记录的帖子,我没有重复记录,我有重复键1和键2对的记录 下面的代码应该可以简化并说明我要查找的内容: import pandas as pd data={'key1':[1,2,3,1,2,3,2,2],'key2':[2,2,1,2,2
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具有重复的键1和键2对“1”和“2”
记录1、4、6和7具有重复的键1和键2对“2”和“2”
我需要以以下内容结束:(所有键1和键2对都是唯一的,数据汇总)
正如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
不需要使用参数作为_index=False进行聚合的解决方案-重置_index
:
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
frame.groupby(['key1','key2'])['data'].sum().reset_index()
哇,这真是一件艺术品!我最终使用了:frame=frame.groupby(['key1','key2'])['data'].sum().reset_index()谢谢,但是你的示例看起来比我的更干净,所以我最终保留了.reset_index()@MikeF。-这取决于你。这两种解决方案都非常有效。天气真好!
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