熊猫.选择多列中缺少值的行

  • 本文关键字:选择 熊猫 python pandas
  • 更新时间 :
  • 英文 :


假设我们有一个列为'Race', 'Age', 'Name'的数据帧。我想创建两个2 DF:
1(在列'Race' and 'Age'
2(只有在列"种族"one_answers"年龄"中缺少值

我写了以下代码

first_df = df[df[columns].notnull()]
second_df= df[df[columns].isnull()]

但是,此代码不起作用。我用这个代码解决了这个问题

first_df= df[df['Race'].isnull() & df['Age'].isnull()]
second_df = df[df['Race'].isnull() & df['Age'].isnull()]

但是如果有10列呢?有没有一种方法可以在不使用逻辑运算符的情况下编写此代码,只使用columns列表?

如果选择多个列得到boolean DataFrame,则有必要通过DataFrame.all测试所有列是否为True,或者通过DataFrame.any:测试每行是否至少有一个True

first_df = df[df[columns].notnull().all(axis=1)]
second_df= df[df[columns].isnull().all(axis=1)]

您也可以使用~反转掩码:

mask = df[columns].notnull().all(axis=1)
first_df = df[mask]
second_df= df[~mask]

步骤1:创建一个新的数据帧,删除丢失的数据(NaN、pd.NaT、None(,您可以过滤掉不完整的行。DataFrame.dropna删除包含至少一个缺少数据的字段的所有行

假设新的df为df_updated,更早的为df_Original

步骤2:现在我们的解决方案DF将是两个DF之间的差异。可以通过找到pd.concat([DF_Original,DF_updated](.drop_duplicates(keep=False(

最新更新