【问题标题】:FillNa is not working?FillNa 不工作?
【发布时间】:2017-12-26 14:47:07
【问题描述】:

我有一个数据框的以下列:

    LC_REF
     2C16
     2C17
     2C18
      nan
      nan
      nan

但是,当我尝试用另一列的值填充 nan 时:

 df['LC_REF'].fillna(df2['cycle']) 

nan 值未填充。有什么线索吗?

df.head()

0    2C16                
1    3C16
2    NaN
3    NaN
4    NaN   

df2.head()    
0  Elkjop,Generic,MSH,SBSO ME KSA
1  Elkjop,Generic,MSH,SBSO ME KSA
2                             DSG                   

【问题讨论】:

  • 什么是df2['cycle']
  • @willem 另一列的值
  • 您的NaN 值看起来像字符串...是print(df) 的输出吗?
  • @codeninja,你能发布print(df.head())print(df2.head()) 的输出吗?
  • 我同意@MaxU 的观点,我们需要查看两个数据帧。当您将 Series 传递给 fillna 时,它会根据索引对齐,因此如果看不到两个 DataFrame 的索引,将很难调试问题。

标签: python python-3.x pandas


【解决方案1】:

别忘了inplace 参数

df['LC_REF'].fillna(df2['cycle'], inplace=True) 

【讨论】:

  • 不幸的是仍然没有填充 nan 值。我不知道该怎么做!我已经探索了一些过去关于 nan 不填充的帖子,但我还没有找到解决方案
  • 您不能用整列填充值。 df2.cycle 的哪个特定值进入NA 值?
  • 所以我的 df2.cycle 数据框恰好是我需要填充 nan 值的所有数据,我猜这就是它不起作用的原因。所以我的 df2.cycle 数据框看起来像 3C16 4C16 5C17。我想用这 3 个元素填充剩余的 nan 值
  • 你如何决定三个元素中的哪个进入哪个 NaN 值?
  • @A.Kot 我创建了一个单独的数据框,用于填充这些 nan 值
【解决方案2】:

确保那些 nan 真的是 np.nan。

df['LC_REF'] = df['LC_REF'].replace('nan',np.nan).fillna(df2['cycle'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2018-08-14
    • 2017-01-04
    • 2020-05-15
    • 2021-03-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多