python - Pandas GroupBy 列出一列列表中的值并查找它们的平均值

标签 python pandas pandas-groupby

我有一个大型 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

唯一名称的数量非常长,因此效率很重要

最佳答案

这需要首先对“name”列进行爆炸,然后是标准的GroupBy.mean():

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

   names  sentiment
0   Lily         10
1  Kerry          6
2   Mona          4

关于python - Pandas GroupBy 列出一列列表中的值并查找它们的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62436619/

相关文章:

python - 在python的列表中查找项目的最快方法是什么?

python - python中区分大小写的字符串匹配替换

python - 将 Pandas 数据框的多列与具有不同长度和索引的另一个数据框的一列进行比较

python - 如何使用一个键将多个列表值的数据框制作成python中的字典?

python - Keyerror 多索引数据框 pandas

python - 如果组中的任何一行包含特定值,则创建新列并分配值

python - 如何根据模糊条件从Numpy数组中选择值?

python - Python 中的邻接矩阵

python - Pandas 在 1 个图的 11 个图中绘制 22 个系列

python - 使用日期列查找 Pandas 数据框的年平均值