簡體   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