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