【问题标题】:pandas DataFrame: replace nan values with median of columns for each periodpandas DataFrame:用每个时期的列中位数替换nan值
【发布时间】:2021-12-15 13:00:48
【问题描述】:

我有一个 pandas DataFrame(面板数据),其中大部分填充了实数,但其中也有一些 nan 值。

如何将 NaN 替换为每年的列中位数(每年的横截面中位数)?

id year A B C
1 2000 3.539.101 265.152 .0683649
1 2001 3.539.101 2.485.833 NaN
1 2002 NaN 2.939.903 NaN
1 2003 3.733.545 3.021.591 -.0257413
2 2000 3.960.184 NaN .9781774
2 2001 3.960.184 9.418.228 .4855057
2 2002 3.960.184 9.880.249 .049056
2 2003 3.960.184 NaN .2310434
3 2000 NaN 1.287.206 -.0373083
3 2001 NaN 1.582.817 .1202868
3 2002 4.724.285 1.279.348 -.1824576
3 2003 4.724.285 1.213.678 -.0513311

【问题讨论】:

标签: pandas panel nan


【解决方案1】:

试试这个:df.fillna(df.median())

【讨论】:

  • df['column'] = df.groupby(['category'])['column'].apply(lambda x:x.fillna(x.median())) 如果您想按类别估算中位数,这是基本格式。
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2013-09-12
  • 2018-11-14
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多