【问题标题】:How do I replace NaNs with the values from another row?如何用另一行的值替换 NaN?
【发布时间】:2019-08-26 12:14:08
【问题描述】:

我有一个包含 NaN 的行的 df。我想用该行最相似行的相应变量值来估算那些。我创建了我的 df 的一个子集,其中包含所有具有 NaN 的行,并创建了一个列表,其中包含与子集中的行最相似的行的索引。 我现在有了缺失值的行的 ID 以及与该行最相似的行的 ID。

假设这是我的 df:


    ID  A   B   C
    01  10  20  40.0
    02  12  19  43.0
    03  10  NaN NaN

我想要的是用其他行的值替换 NaN。 预期结果:


    ID  A   B   C
    01  10  20  40.0
    02  12  19  43.0
    03  10  20  40.0

这似乎不起作用:


    df.loc[df['ID'] == 03]['B'] = df.loc[df['ID'] == 01]['B']

理想情况下,我会用另一行的值填充一行中的所有 NaN。

【问题讨论】:

  • 您可以计算欧几里得距离矩阵,查找与特定行中可用列最相似的行,并使用它们来填充缺失值
  • 我已经这样做了,但找不到合适的方法来替换它们。我正在寻找类似@MarkWang 的帖子。

标签: python pandas dataframe indexing imputation


【解决方案1】:

您可以fillna 使用列或行,

df.fillna(df.iloc[0])

【讨论】:

  • 这正是我想要的,谢谢!!
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2020-10-27
  • 2018-09-24
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多