总结熊猫中的重复项

时间:2020-05-13 10:12:36

标签: pandas group-by

我有一个熊猫数据框,其中包含数字和字符串。一些“ ID”不止一个。对于那些我想总结的数字,并用逗号连接字符串。

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)

    res = {
            "payload": f"{serializer.data['payload'].upper()}"
    }

    return Response(res, status=status.HTTP_200_OK)

利用以下内容,我可以总结出一些数字,但是我也在寻找一种组合文本的方法:

data = {'ID': ('111', '222', '333', '333'),
        'Text': ('aaa', 'bbb', 'ccc', 'ddd'),
        'Number_1': (1, 2, 3, 4),
        'Number_2': (4, 3, 2, 1)}

df = pd.DataFrame(data)

结果应为具有以下内容的数据框:

df = df.groupby(['ID'])['Zahl', 'Zahl_2'].sum().reset_index()

1 个答案:

答案 0 :(得分:0)

join列中使用带有Text的命名聚合:

df = df.groupby(['ID']).agg(Text = ('Text', ','.join),
                            Number_1= ('Number_1','sum'),
                            Number_2 =('Number_2', 'sum')
                            ).reset_index() 

print (df)
    ID     Text  Number_1  Number_2
0  111      aaa         1         4
1  222      bbb         2         3
2  333  ccc,ddd         7         3

编辑:

对于旧版本的熊猫,请使用:

df = df.groupby(['ID']).agg({'Text': ','.join, 
                             'Number_1':'sum',
                             'Number_2': 'sum'}
                            ).reset_index() 

print (df)
    ID     Text  Number_1  Number_2
0  111      aaa         1         4
1  222      bbb         2         3
2  333  ccc,ddd         7         3