簡體   English   中英

為熊貓數據框應用跨行滾動中位數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM