使用Pandas GroupBy从多个列中聚合唯一值

Nithrynx:

我进入了无数线程(1 2 3 ...),但仍然找不到解决问题的方法...我有一个这样的数据框:

prop1 prop2 prop3    prop4 
L30   3     bob      11.2
L30   54    bob      10
L30   11    john     10
L30   10    bob      10
K20   12    travis   10 
K20   1     travis   4 
K20   66    leo      10

我想对prop1和AND进行分组,同时,将所有其他列汇总,但仅包含唯一值。像那样:

prop1  prop2       prop3       prop4
L30    3,54,11,10  bob,john    11.2,10
K20    12,1,66     travis,leo  10,4

我尝试了不同的方法:

  1. df.groupby('prop1')['prop2','prop3','prop4'].apply(np.unique) 退货

AttributeError:'numpy.ndarray'对象没有属性'index'加上TypeError:Series.name必须是可哈希的类型

  1. 另外:.apply(lambda x: pd.unique(x.values.ravel()).tolist())它给出一个列表作为输出,我想要列。

  2. df.groupby('prop1')['prop2','prop3','prop4'].unique() 本身不起作用,因为有多个列。

  3. .apply(f) f为:

    def f(df): df['prop2']=df['prop2'].drop_duplicates() df['prop3']=df['prop3'].drop_duplicates() df['prop4']=df['prop4'].drop_duplicates() return df

什么也没做

  1. 我也尝试使用.agg()不同的选项,但没有成功。

你们当中有一个有想法吗?

非常感谢你 :)

cs95:

使用groupbyagg,并通过调用Series.unique以下命令仅汇总唯一值

df.astype(str).groupby('prop1').agg(lambda x: ','.join(x.unique()))

            prop2       prop3      prop4
prop1                                   
K20       12,1,66  travis,leo   10.0,4.0
L30    3,54,11,10    bob,john  11.2,10.0

df.astype(str).groupby('prop1', sort=False).agg(lambda x: ','.join(x.unique()))

            prop2       prop3      prop4
prop1                                   
L30    3,54,11,10    bob,john  11.2,10.0
K20       12,1,66  travis,leo   10.0,4.0

如果处理NaN很重要,请fillna提前致电

import re
df.fillna('').astype(str).groupby('prop1').agg(
    lambda x: re.sub(',+', ',', ','.join(x.unique()))
)

            prop2       prop3      prop4
prop1                                   
K20       12,1,66  travis,leo   10.0,4.0
L30    3,54,11,10    bob,john  11.2,10.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用pandas groupby计算唯一值

如何从Pandas Groupby中的多个列中获取唯一值

如何使用聚合方法从熊猫系列中获得唯一值?

如何使用pandas groupby来实现多个聚合,请参考特定的列

Pandas Groupby唯一多列

使用Pandas groupby,如何使用加法聚合列表的一列?

计算列中的唯一值-Pandas Python

在pandas列中返回唯一值的顺序

Pandas GroupBy-仅显示具有多个唯一特征值的组

Pandas groupby用于一列中的多个值

如何使用多个列的值聚合数据框中的多个列

使用Pandas对特定列中的某些唯一值执行诸如中位数,均值等操作

使用Pandas / Python为列中的重复项生成唯一值

使用pandas groupby转换唯一值

使用For循环在Pandas数据框中返回唯一值

Pandas:用唯一值替换多个列值

如何使用 Pandas 打印组中列的唯一值?

如何在 Pandas 列中对唯一名称使用 groupby 和 cumcount

使用 groupby 在多个键上聚合 R 中不同函数的多个列:R 中的命名聚合

Pandas groupby 使用基于两列的聚合

pandas groupby + 多个聚合/多列应用

如何使用列中的唯一值列表制作列

Pandas groupby 统计聚合函数中的值

如何使用 JQuery 从 JSON 中获取多个唯一值?

Pandas:根据列中的唯一值创建列

Pandas - 在多个数据框中的同一列中查找唯一值

Pandas groupby 和聚合:为某些单元格生成唯一的单个值

pandas groupby,计算一个组中的唯一值并跨组求和

根据另一列中的一些多个过滤器值匹配列中的子字符串并使用 Pandas 聚合计数