反向熊猫 groupby().agg(list)

时间:2021-07-21 12:37:42

标签: python pandas

我想反转 DataFrame.groupby().agg(list)

这是初始数据。

  PERSON  FOO  BAR
0   Maya   12    0
1   Maya    3    1
2    Jim    9    2
3    Jim    7    3

这就是结果 groupby().agg(list) 和更多的工作。

            FOO    BAR
PERSON
Jim      [9, 7]  2 | 3
Maya    [12, 3]  0 | 1

期待这样的结果

  PERSON  FOO  BAR
0   Maya   12  0 | 1
1   Maya    3  0 | 1
2    Jim    9  2 | 3
3    Jim    7  2 | 3

一句话:

  • 我想“取消列出”FOO
  • 中的单元格内容
  • 保留/复制 BAR 中的内容。

这是一个完整的 MWE:

#!/usr/bin/env python3
import pandas as pd

df = pd.DataFrame(
    {
        'PERSON': ['Maya', 'Maya', 'Jim', 'Jim'],
        'FOO': [12, 3, 9, 7],
        'BAR': range(4)
    }
)
print(df)

# Group by Person but keep all content as list's in the cells
dfg = df.groupby('PERSON').agg(list)
# Do some work on the result
dfg.BAR = dfg.BAR.apply(lambda cell: ' | '.join([str(e) for e in cell]))

print(dfg)

1 个答案:

答案 0 :(得分:1)

就是这样:

dfg.explode('FOO')