gpt4 book ai didi

python - Pandas 计算 groupby 中的平均单词数

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:46 25 4
gpt4 key购买 nike

假设我有一个如下所示的数据框:

df = pd.DataFrame({'id': [1,1,1,1,2,2,2,3,4,4,4,4,4],
'feedback': ['one word', np.nan, np.nan, 'test',
'second', np.nan, 'test 2',
np.nan,
'fourth', 'multiple words', 'test 1 2 3', 'things', np.nan]})

print(df)

id feedback
0 1 one word
1 1 NaN
2 1 NaN
3 1 test
4 2 second
5 2 NaN
6 2 test 2
7 3 NaN
8 4 fourth
9 4 multiple words
10 4 test 1 2 3
11 4 things
12 4 NaN

我想计算一些聚合值:

  • 每个id的行数
  • 为每个 id 提供反馈的行数
  • 每次提供的反馈的平均字数id

我想要的输出是:

   id  count  complete  avg_words
0 1 4 2 1.5
1 2 3 2 1.5
2 3 1 0 NaN
3 4 5 4 2.0

我有以下代码,可以完成除最后一点之外的所有内容:

df.groupby(['id']).agg({'id': 'count',
'feedback': ['count', lambda x: len(x)]}).reset_index()

这给了我:

  id       feedback         
count count <lambda>
0 1 4 2 4
1 2 3 2 3
2 3 1 0 1
3 4 5 4 5

除了最后一列之外,一切都是正确的(索引也有点奇怪,但这是一个小问题)

lambda 函数是一个占位符。如何计算每个id仅提供的反馈的平均字数?

最佳答案

试试这个:

In [96]: df.assign(avg_words=df['feedback'].str.split().str.len()) \
...: .groupby('id') \
...: .agg({'id': 'count','feedback': 'count', 'avg_words': 'mean'}) \
...: .rename(columns={'id':'count', 'feedback':'complete'}) \
...: .reset_index()
Out[96]:
id count complete avg_words
0 1 4 2 1.5
1 2 3 2 1.5
2 3 1 0 NaN
3 4 5 4 2.0

关于python - Pandas 计算 groupby 中的平均单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327713/

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