gpt4 book ai didi

python - Pandas Dataframe 分组依据,带有列表的列

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:46 24 4
gpt4 key购买 nike

我使用的是 jupyter 笔记本,我当前的数据框如下所示:

players_mentioned  |  tweet_text    |  polarity
______________________________________________
[Mane, Salah] | xyz | 0.12
[Salah] | asd | 0.06

如何将所有玩家单独分组并平均他们的极性?

目前我尝试使用:

df.groupby(df['players_mentioned'].map(tuple))['polarity'].mean()

但是这将返回一个数据框,将所有提及项分组在一起以及分开时,我怎样才能最好地将玩家分开然后将他们重新组合在一起。

预期的输出将包含

 player  | polarity_average
____________________________
Mane | 0.12
Salah | 0.09

换句话说,如何按每行列表中的每个项目进行分组。

最佳答案

您可以使用 unnesting idiom from this answer .

def unnesting(df, explode):
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx

return df1.join(df.drop(explode, 1), how='left')

您现在可以在未嵌套的“players_mentioned”列上调用 groupby

(unnesting(df, ['players_mentioned'])
.groupby('players_mentioned', as_index=False).mean())

players_mentioned polarity
0 Mane 0.12
1 Salah 0.09

关于python - Pandas Dataframe 分组依据,带有列表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55462635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com