熊猫-通过选择多个列将两个数组汇总为一组中的多个列

时间:2019-04-15 21:39:15

标签: python pandas

下面是我的数据框的结构。我需要根据ID,国家/地区和州进行分组,分别对vectors_1和vector_2进行汇总。请有人建议如何为多列添加矢量

Id  Country State    Vector_1                   Vector_2
1     US     IL   [1.0,2.0,3.0,4.0,5.0]   [5.0,5.0,5.0,5.0,5.0]

1     US     IL   [5.0,3.0,3.0,2.0,1.0]   [5.0,5.0,5.0,5.0,5.0]

2     US     TX   [6.0,7.0,8.0,9.0,1.0]   [1.0,1.0,1.0,1.0,1.0]

输出应如下所示

Id  Country State    Vector_1                      Vector_2
1     US     IL   [6.0,5.0,6.0,6.0,6.0]    [10.0,10.0,10.0,10.0,10.0] 
2     US     TX    [6.0,7.0,8.0,9.0,1.0]    [1.0,1.0,1.0,1.0,1.0]

1 个答案:

答案 0 :(得分:1)

如果您的Vector_1Vector_2不是np.array,请尝试先进行转换。

cols = ['Vector_1', 'Vector_2']

df[cols] = df[cols].applymap(lambda x: np.array(x))

然后将groupbyapply一起使用以对每个组求和

result = (df.groupby(['Id', 'Country', 'State'])[cols]
            .apply(lambda x: x.sum())
            .reset_index())
result

   Id Country State                   Vector_1                        Vector_2
0   1      US    IL  [6.0, 5.0, 6.0, 6.0, 6.0]  [10.0, 10.0, 10.0, 10.0, 10.0]
1   2      US    TX  [6.0, 7.0, 8.0, 9.0, 1.0]       [1.0, 1.0, 1.0, 1.0, 1.0]