假设我们有一个包含 columns 的数据框'Race', 'Age', 'Name'。我想创建两个 2 DF:
1)列中没有缺失值'Race' and 'Age'
2)仅列“种族”和“年龄”中缺失值
我写了下面的代码
first_df = df[df[columns].notnull()]
second_df= df[df[columns].isnull()]
Run Code Online (Sandbox Code Playgroud)
然而这段代码不起作用。我使用这段代码解决了这个问题
first_df= df[df['Race'].isnull() & df['Age'].isnull()]
second_df = df[df['Race'].isnull() & df['Age'].isnull()]
Run Code Online (Sandbox Code Playgroud)
但如果有 10 列呢?有没有一种方法可以在不使用逻辑运算符的情况下仅使用columns列表来编写此代码?
如果选择多列 get boolean DataFrame,则需要测试所有列是否为 True,DataFrame.all或者测试每行是否至少有一个 True DataFrame.any:
first_df = df[df[columns].notnull().all(axis=1)]
second_df= df[df[columns].isnull().all(axis=1)]
Run Code Online (Sandbox Code Playgroud)
您还可以用于~反转蒙版:
mask = df[columns].notnull().all(axis=1)
first_df = df[mask]
second_df= df[~mask]
Run Code Online (Sandbox Code Playgroud)