首页 > 解决方案 > Pandas groupby 分别制作两列列表

问题描述

我目前有一个包含三列的 DataFrame。为了方便起见,我们称它们为fruit,sport和。weather

我想要做的是按fruit列对 DataFrame 进行分组,并将相应的值设置为sportweather到列表中,以便我们为每个 unique都有对应的sport和列表。weatherfruit

例如:

# Original DataFrame

      fruit      sport         weather
0     apple      baseball      sunny
1     banana     swimming      cloudy
2     apple      basketball    windy
3     orange     football      sunny
4     banana     hockey        windy


# Desired DataFrame
      fruit      sport                       weather
0     apple      [baseball, basketball]      [sunny, windy]
1     banana     [swimming, hockey]          [cloudy, windy]
2     orange     [football]                  [sunny]

将其中一个列值分组到一个列表中相对简单,但我对如何用两个来做到这一点有点困惑。我该怎么办?提前致谢。

标签: pythonpandas

解决方案


您可以groupby使用构造函数进行聚合list

df.groupby('fruit', as_index=False).agg(list)

    fruit                   sport          weather
0   apple  [baseball, basketball]   [sunny, windy]
1  banana      [swimming, hockey]  [cloudy, windy]
2  orange              [football]          [sunny]

推荐阅读