python - pandas 将 rows/groupby 与分类数据和大量 nan 值连接起来

标签 python pandas pandas-groupby

我试图通过连接基于两列的行来简化数据框。现在,剩下的部分有点困惑,有很多 nan 值等。我将展示一个示例:

初始:

    Name    Sex     Shoes       Bike          Car
0   John    Male             Specialised    
1   John    Male             Bridgestone    
2   Lucy    Female                            BMW
3   John    Male    Vans        
4   Lucy    Female  Nike    

目标:

    Name    Sex     Shoes   Bike                        Car
0   John    Male    Vans    Specialised, Bridgestone    
1   Lucy    Female  Nike                                BMW

我应该使用什么功能?我不知道如何使用 groupby.agg(','.join) 添加...

(上面的数据只是示例性的 - 我必须使用的数据有更多的行,其中多次出现同名,大约有 20 个“类别”列...另请注意,每一行都应该有字符串仅“类别”之一 - 鞋子/自行车/汽车等)

提前致谢!

最佳答案

假设空单元格为NaN(非空字符串),则以下将达到结果,

(df.set_index(['Name','Sex']) 
   .groupby(level=[0,1])
   .apply(lambda x:x.apply(lambda y: ', '.join(y.dropna())))
   .reset_index())

第二种方法,

(df.set_index(['Name','Sex'])
   .stack()
   .groupby(level=[0,1,2])
   .apply(', '.join)
   .unstack()
   .reset_index()

关于python - pandas 将 rows/groupby 与分类数据和大量 nan 值连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418334/

相关文章:

python - 出于特殊目的更改 pandas DataFrame 中的类型?

python - 我的 Pyramid 不喜欢 Pandas

python - 使用来自不同数据集的组均值填充一个数据集中的缺失值

python - 从 Python 问题中运行 Shell 脚本

python - Redis-py是否支持unicode和utf-8以及它是如何工作的

python - 如何在后面的参数中引用函数调用的前面的参数?

python-3.x - Pandas 数据阅读器

python - 什么时候使用 df.value_counts() 与 df.groupby ('...' ).count() 比较合适?

python - 按 Pandas 组顺序计算差异

python - 使用 psycopg2 和 pandas 处理错误查询产生的错误