我有一个带有不规则日期的pandas数据框。是否有办法使用7天作为移动窗口来计算中位数绝对偏差,中位数等?我觉得我可以在某种程度上使用
pandas.rolling_apply
,但它不会将不规则的日期作为窗口参数。我找到了一个类似的帖子https://dev59.com/KmUo5IYBdhLWcg3wxB7T#30244019 ,并尝试创建自定义函数,但仍然无法解决..请问有人能帮忙吗?import pandas as pd
from datetime import datetime
person = ['A','B','C','B','A','C','A','B','C','A',]
ts = [
datetime(2000, 1, 1),
datetime(2000, 1, 1),
datetime(2000, 1, 10),
datetime(2000, 1, 20),
datetime(2000, 1, 25),
datetime(2000, 1, 30),
datetime(2000, 2, 8),
datetime(2000, 2, 12),
datetime(2000, 2, 17),
datetime(2000, 2, 20),
]
score = [9,2,1,3,8,4,2,3,1,9]
df = pd.DataFrame({'ts': ts, 'person': person, 'score': score})
df看起来是这样的
person score ts
0 A 9 2000-01-01
1 B 2 2000-01-01
2 C 1 2000-01-10
3 B 3 2000-01-20
4 A 8 2000-01-25
5 C 4 2000-01-30
6 A 2 2000-02-08
7 B 3 2000-02-12
8 C 1 2000-02-17
9 A 9 2000-02-20
pd.rolling_apply(df, window=relativedelta(days=7), func, min_periods=1)
我之前有些困惑,现在我已经更正了我的帖子。谢谢你指出来。 - E.K.pandas.resample
来填充先前的值,因为这个数据框包含不同学生的测试成绩。它不像一个公司的股票价格。如果是这样,我同意可以使用先前的值来填充周末的缺失值。 - E.K.