Pandas GroupBy 列表中的一列列表的值,并找到它们的平均值。

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

我有一个大的pandas数据框架(1M行),格式如下。

data = {
    'names': {0: ['Lily', 'Kerry', 'Mona'], 1: ['Kerry', 'Mona'], 2: ['Mona']},
    'sentiment': {0: 10, 1: 2, 2: 0}
}
df = pd.DataFrame(data)
df

                 names  sentiment
0  [Lily, Kerry, Mona]         10
1        [Kerry, Mona]          2
2               [Mona]          0

我想计算名字列中每个独特名字的平均情绪,结果如下。

   names  sentiment
0   Lily         10
1  Kerry          6
2   Mona          4

独特名字的数量非常多,所以效率很重要。

pandas pandas-groupby
1个回答
3
投票

这需要先对 "姓名 "列进行爆炸,然后再进行标准的。GroupBy.mean():

df.explode('names').groupby('names', as_index=False, sort=False).mean()

   names  sentiment
0   Lily         10
1  Kerry          6
2   Mona          4
© www.soinside.com 2019 - 2024. All rights reserved.