首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:从第0行到第n行计算value_counts()的平均值

熊猫:从第0行到第n行计算value_counts()的平均值
EN

Stack Overflow用户
提问于 2022-12-03 17:05:29
回答 1查看 42关注 0票数 1

我正在努力创建一个函数,该函数可以首先计算特定列(从0行到第n行)中每个字符串的出现次数,然后通过计算从第一行到第n行的value_counts值,将其缩减为一个值。

更准确地说,我想要做的是创建一个新的列‘意思’,其中每一行n的值等于从第一行到第n行的meanvalue_counts() 'Name‘。

代码语言:javascript
复制
import pandas as pd
import datetime as dt

data = [["2022-11-1", 'Tom'], ["2022-11-2", 'Mike'], ["2022-11-3", 'Paul'], ["2022-11-4", 'Pauline'], ["2022-11-5", 'Pauline'], ["2022-11-6", 'Mike'], ["2022-11-7", 'Tom'], ["2022-11-8", 'Louise'], ["2022-11-9", 'Tom'], ["2022-11-10", 'Mike'], ["2022-11-11", 'Paul'], ["2022-11-12", 'Pauline'], ["2022-11-13", 'Pauline'], ["2022-11-14", 'Mike'], ["2022-11-15", 'Tom'], ["2022-11-16", 'Louise']]
df = pd.DataFrame(data, columns=['Date', 'Name'])

例如,第6行的平均值应该是1.25,因为Pauline出现了两次,因此计算值应该是(1 +1+1+2+ 1)/5 = 1.25。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-03 17:15:31

逻辑不清楚,但假设您想要不断扩展的平均值值,请使用:

代码语言:javascript
复制
df['mean'] = pd.Series(pd.factorize(df['Name'])[0], index=df.index)
                         .expanding()
                         .apply(lambda s: s.value_counts().mean())
                      )

输出:

代码语言:javascript
复制
          Date     Name  mean
0    2022-11-1      Tom  1.00
1    2022-11-2     Mike  1.00
2    2022-11-3     Paul  1.00
3    2022-11-4  Pauline  1.00
4    2022-11-5  Pauline  1.25
5    2022-11-6     Mike  1.50
6    2022-11-7      Tom  1.75
7    2022-11-8   Louise  1.60
8    2022-11-9      Tom  1.80
9   2022-11-10     Mike  2.00
10  2022-11-11     Paul  2.20
11  2022-11-12  Pauline  2.40
12  2022-11-13  Pauline  2.60
13  2022-11-14     Mike  2.80
14  2022-11-15      Tom  3.00
15  2022-11-16   Louise  3.20
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74668825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档