【问题标题】:Pandas conditional column returning the opposite?熊猫条件列返回相反?
【发布时间】:2020-04-26 20:53:35
【问题描述】:

我想在 Pandas 数据框中添加第三列,这是一个条件,如果第一列是 NaN,则使用第二列的信息,在任何其他情况下使用第一列的信息。

当我使用以下代码时,它根本不起作用。 但是,如果我将 == 更改为 != 它可以工作(这对我来说没有任何意义,因为它要求相反)。

def Launch_year_final(row):
    if row['Launch year'] == 'NaN':
        return row['Launch year (filled)']
    else:
        return row['Launch year']

result['Launch year (final)'] = result.apply(Launch_year_final, axis=1)

知道为什么会这样吗?

【问题讨论】:

  • result['Launch year (final)'] = result['Launch year'].fillna('Launch year (filled)')
  • 你试过if row['Launch year'] == np.nan吗?
  • @QuangHoang 成功了,只需将 fillna 内部更改为 result[`Launch year (filled)]。谢谢!!知道为什么我的条件返回相反吗?
  • @Renaud 还没有,我直到现在才使用 pandas,但肯定会尝试一下。
  • @Renaud np.nan == np.nan 将返回 False。

标签: python pandas dataframe null conditional-statements


【解决方案1】:

NaN 值一个特殊的常量,要验证某物是否为NaN,您需要使用pandas.isnannumpy.isnan()。另一种解决方案是使用numpy.where()

import numpy as np
result['Launch year (final)'] = np.where(np.isnan(result['Launch year']), 
                                         result['Launch year (filled)'],
                                         result['Launch year'])

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 2017-08-08
    • 2016-09-23
    • 2019-06-09
    • 2020-03-30
    • 2014-05-22
    • 2017-11-27
    • 2019-08-14
    相关资源
    最近更新 更多