[英]calculating median using rolling window in pandas across multiple rows and columns
[英]Applying rolling median across row for pandas dataframe
我想應用滾動中位數來替換以下數據框中的 NaN 值,窗口大小為 3:
1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
17 366000.0 278000.0 330000.0 NaN 434000.0 470600.0 433000.0 456000.0 556300.0 580200.0 635300.0 690600.0 800000.0 NaN 821500.0 ... 850800.0 905000.0 947500.0 1016500.0 1043900.0 1112800.0 1281900.0 1312700.0 1422000.0 1526900.0 1580000.0 1599000.0 1580000.0 NaN NaN
然而,熊貓rolling
功能似乎適用於列而不是一行。 我怎樣才能解決這個問題? 此外,解決方案不應更改該行中的任何非 NAN 值
首先通過使用帶有axis=1
(按行)、 min_periods=0
(處理NaN
)和closed='both'
(否則左邊緣被排除)的rolling()
計算滾動中位數。
然后使用fillna()
這些中位數替換NaN
條目。
medians = df.rolling(3, min_periods=0, closed='both', axis=1).median()
df = df.fillna(medians)
# 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ... 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
# 17 366000.0 278000.0 330000.0 330000.0 434000.0 470600.0 433000.0 456000.0 556300.0 580200.0 ... 1112800.0 1281900.0 1312700.0 1422000.0 1526900.0 1580000.0 1599000.0 1580000.0 1580000.0 1589500.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.