将 groupby 列中的重复值分组并合并为一个

问题描述 投票:0回答:1

我的所有列都有一个字符串值的数据框,我的最终结果是使用reportlab的pdf输出,我有以下问题

   df = pd.DataFrame({'Token' : ['a','a','a','b','b','b','c','c','c'],
                   'value1' : ['abc','def','ghi','jkl','mno','pqr','stu','vwx','xyz'],
                   'value2' :['aaa','bbb','ccc','ddd','eee','fff','ggg','hhh','iii']})
  print(df)
Token value1 value2
0     a    abc    aaa
1     a    def    bbb
2     a    ghi    ccc
3     b    jkl    ddd
4     b    mno    eee
5     b    pqr    fff
6     c    stu    ggg
7     c    vwx    hhh
8     c    xyz    iii

我尝试过,groupby,设置索引,设置multiindex和sort_values 我正在寻找类似于下面的结果,感谢对此的任何帮助。

    Token value1 value2
0          abc    aaa
1     a    def    bbb
2          ghi    ccc
3          jkl    ddd
4     b    mno    eee
5          pqr    fff
6          stu    ggg
7     c    vwx    hhh
8          xyz    iii
python pandas dataframe group-by multi-index
1个回答
0
投票

你可以尝试:

def fn(g):
    t = g["Token"].iat[0]
    g["Token"] = ""
    g["Token"].iat[len(g) // 2] = t
    return g


df = df.groupby("Token", group_keys=False).apply(fn)
print(df)

打印:

  Token value1 value2
0          abc    aaa
1     a    def    bbb
2          ghi    ccc
3          jkl    ddd
4     b    mno    eee
5          pqr    fff
6          stu    ggg
7     c    vwx    hhh
8          xyz    iii
© www.soinside.com 2019 - 2024. All rights reserved.