[英]calculating median using rolling window in pandas across multiple rows and columns
有一个 5 行 3 列的数据集。 索引在 2 秒重新采样。 所以我想计算频率=2 的滚动中位数。
因此,在计算频率为 2 的中位数时,它应该查找前 2 行和所有 3 列(如 B、c 和 d)以得出中位数。 同样,第二个窗口应该同时考虑行和所有 3 列 B 、c 和 d 来得出中位数。
df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4],'c': [2,4,7,8,9],'d': [2,8,7,5,9]},
index = [pd.Timestamp('20130101 09:00:00'),
pd.Timestamp('20130101 09:00:02'),
pd.Timestamp('20130101 09:00:03'),
pd.Timestamp('20130101 09:00:05'),
pd.Timestamp('20130101 09:00:06')])
在pandas中我们只能在滚动窗口中传递一列,如何传递多列。 以便它在所有列中查找该行中存在的所有元素。
df.B.rolling('2s').median()
我预计输出是:
2013-01-01 09:00:00 Nan
2013-01-01 09:00:02 1.0
2013-01-01 09:00:03 5.5
等等
我们如何在熊猫滚动函数中传递多列
只是不要使用列引用
df.rolling('2s').median()
B c d
2013-01-01 09:00:00 0.0 2.0 2.0
2013-01-01 09:00:02 1.0 4.0 8.0
2013-01-01 09:00:03 1.5 5.5 7.5
2013-01-01 09:00:05 NaN 8.0 5.0
2013-01-01 09:00:06 4.0 8.5 7.0
请注意,如果您只计算 2 个元素的中位数,它会返回与平均值相同的结果。 这是因为不能为 2 个元素计算任何中值,因为它被定义为将元素列表分为较高值和较低值的元素。
df.rolling('2s').mean()
B c d
2013-01-01 09:00:00 0.0 2.0 2.0
2013-01-01 09:00:02 1.0 4.0 8.0
2013-01-01 09:00:03 1.5 5.5 7.5
2013-01-01 09:00:05 NaN 8.0 5.0
2013-01-01 09:00:06 4.0 8.5 7.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.