如何将Python pandas groupby结果转换为指定格式的扁平化DataFrame
解决方法
你可以先给每个x分组内的元素生成序列编号,再通过透视表将纵向数值转为横向列,缺失值统一填充为0即可,实现代码如下:
import pandas as pd df1 = pd.DataFrame( { "x" : ["A", "B", "C", "A", "B" ,"B"] , "y" : [ 1, 2, 3, 4, 5, 6]} ) # 给每个x分组内的行生成序号,从1开始匹配y1/y2/y3的后缀规则 df1['col_suffix'] = df1.groupby('x').cumcount() + 1 # 透视表转换,空值填0后转为整数类型 res = df1.pivot(index='x', columns='col_suffix', values='y').fillna(0).astype(int).reset_index() # 重命名列名符合要求 res.columns = ['x'] + [f'y{i}' for i in res.columns[1:]] print(res)
运行后输出结果和你期望的完全一致:
x y1 y2 y3 0 A 1 4 0 1 B 2 5 6 2 C 3 0 0
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

