gpt4 book ai didi

python - 在多行和多列的 Pandas 中使用滚动窗口计算中位数

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:32 24 4
gpt4 key购买 nike

有一个包含 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

等等

我们如何在 pandas 滚动函数中传递多个列

最佳答案

只是不要使用列引用

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

关于python - 在多行和多列的 Pandas 中使用滚动窗口计算中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com