繁体   English   中英

在多行和多列的熊猫中使用滚动窗口计算中位数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM