【问题标题】:filter values in a dataframe column based on null values in a different column python dataframe根据不同列python数据框中的空值过滤数据框列中的值
【发布时间】:2020-12-16 23:31:21
【问题描述】:

我一直坚持这一点,所以希望有人能提供更好的指导。 我目前有一个看起来像这样的数据框(只有更多的行):

|"released_date"| "status"  |

+-------------+--------+

|   12/12/20  |released|

+-------------+--------+

|   10/01/20  |   NaN  |

+-------------+--------+

|   NaN       |   NaN  |

+-------------+--------+

|   NaN.      |released|

+-------------+--------+

我想做df['status'].fillna('released' if df.released_date.notnull())

又名,只要 df.released_date 不是空值,df 的 status 列中的任何 Nan 值都用“released”填充。

我在执行此操作时不断收到各种错误消息,尽管有不同的变体,首先上面的代码是一个语法错误,我想这是因为 notnull() 返回一个布尔数组?

我觉得对此有一个简单的答案,但不知何故我没有看到它。我没有发现任何像这样的问题,我试图根据数据框中的空值来组织一些东西,这让我想知道我的方法首先是否不理想?如果无论如何只返回布尔数组,如何在不使用 isnull() 或 notnull() 的情况下根据不同列中的空值过滤数据框列中的值?使用 == Null 似乎也不起作用...

【问题讨论】:

  • 天哪,df 格式看起来很粗糙。但希望这是有道理的

标签: dataframe replace null multiple-columns missing-data


【解决方案1】:

试试:

idx = df[(df['status'].isnull()) & (~df['released_date'].isnull())].index
df.loc[idx,'status'] = 'released'

首先获取'status'等于null且'released_date'notequals null的所有行的索引。然后使用df.loc更新状态栏。

打印:

  released_date    status
0      12/12/20  released
1      10/01/20  released
2           NaN       NaN
3           NaN  released

【讨论】:

  • 很高兴,我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 2017-08-15
  • 2020-08-16
  • 2020-09-22
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多