python - 具有滚动平均值的数据透视表
问题描述
我尝试创建一个数据透视表来获得一个时间序列,其滚动平均值为两天。为此,我将 pivot_table() 与 aggfunc='mean' 一起使用,但到目前为止,我只能为每一天创建一个平均值,而没有考虑前一天。这将是一个简单的示例 data.frame:
df = pd.DataFrame({
'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03', '2021-01-03', '2021-01-03'],
'Name':['Tim', 'Tim', 'Ben', 'Leo', 'Tim', 'Ben', 'Leo', 'Leo', 'Ben', 'Tim'],
'Ratings':[9.0, 8.0, 5.0, 3.0, 'NaN', 'NaN', 6, 5, 3, 5]})
这是我尝试过的,但我不知道如何合并 2 的滚动窗口,以考虑前一天的评分平均值。
df.pivot_table(
values='Ratings', index='Date', columns='Name',
fill_value=0, aggfunc='mean')
这将是我试图实现的目标。
df = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03'],
'Tim':[8.5, 8.5, 5],
'Ben':[5, 5, 3],
'Leo':['NaN', 4.5, 4.66],})
非常感谢您的帮助 :)
解决方案
在你的情况下
out = df.pivot_table(
values='Ratings', index='Date', columns='Name',
aggfunc='mean').ffill(limit=1)
Name Ben Leo Tim
Date
2021-01-01 5.0 NaN 8.5
2021-01-02 5.0 4.5 8.5
2021-01-03 3.0 5.0 5.0
推荐阅读
- java - 这个日期是祖鲁 (UTC) 时区吗?
- react-native - 如何检查我的 react native 可以支持的 android 版本?
- payment-gateway - GMO支付网关密码验证与API验证冲突
- javascript - 获取html表的列总和
- git - 向 git flow 添加附加命令
- typescript - Protractor with Typescript - 如何从 Stack Trace 中了解哪条线测试失败?
- html - 使用 rvest 抓取 ID 属性
- ionic-framework - 无法绑定到“ngForOf”,因为它不是“div”的已知属性。*ngFor 不适用于 ionic 5
- python - 如果另一列中的值彼此相邻,则对数据框中的列值求和
- google-bigquery - 为什么 BigQuery 执行引擎 Dremel 需要在处理数据之前将数据从 BigQuery 文件系统加载到本地存储?