Pandas DataFrame Isnull 一次多列
Pandas DataFrame Isnull Multiple Columns at Once
鉴于以下情况:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[np.nan,1,2],'b':[np.nan,np.nan,4]})
a b
0 NaN NaN
1 1.0 NaN
2 2.0 4.0
如何 return 列 'a' 和 'b' 都为空的行,而不必为每一列使用 pd.isnull
?
想要的结果:
a b
0 NaN NaN
我知道这行得通(但这不是我想要的):
df.loc[(pd.isnull(df['a']) & (pd.isnull(df['b'])]
我试过这个:
df.loc[pd.isnull(df[['a', 'b']])]
...但出现以下错误:
ValueError: Cannot index with multidimensional key
提前致谢!
你很接近:
df[~pd.isnull(df[['a', 'b']]).all(1)]
或者
df[df[['a','b']].isna().all(1)]
怎么样:
df.dropna(subset=['a','b'], how='all')
您可以使用 dropna()
参数为 how=all
df.dropna(how='all')
输出:
a b
1 1.0 NaN
2 2.0 4.0
由于问题已更新,您可以使用 df.isnull()
或使用 df.isna()
创建屏蔽并相应地进行过滤。
df[df.isna().all(axis=1)]
a b
0 NaN NaN
使用您展示的示例,请尝试执行以下操作。在此处使用 isnull
函数。
mask1 = df['a'].isnull()
mask2 = df['b'].isnull()
df[mask1 & mask2]
以上答案是创建 2 个变量以便更好地理解。如果您想在 df 本身内部使用条件并且不想创建条件变量(在这种情况下为 mask1
和 mask2
),请尝试以下操作。
df[df['a'].isnull() & df['b'].isnull()]
输出如下。
a b
0 NaN NaN
鉴于以下情况:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[np.nan,1,2],'b':[np.nan,np.nan,4]})
a b
0 NaN NaN
1 1.0 NaN
2 2.0 4.0
如何 return 列 'a' 和 'b' 都为空的行,而不必为每一列使用 pd.isnull
?
想要的结果:
a b
0 NaN NaN
我知道这行得通(但这不是我想要的):
df.loc[(pd.isnull(df['a']) & (pd.isnull(df['b'])]
我试过这个:
df.loc[pd.isnull(df[['a', 'b']])]
...但出现以下错误:
ValueError: Cannot index with multidimensional key
提前致谢!
你很接近:
df[~pd.isnull(df[['a', 'b']]).all(1)]
或者
df[df[['a','b']].isna().all(1)]
怎么样:
df.dropna(subset=['a','b'], how='all')
您可以使用 dropna()
参数为 how=all
df.dropna(how='all')
输出:
a b
1 1.0 NaN
2 2.0 4.0
由于问题已更新,您可以使用 df.isnull()
或使用 df.isna()
创建屏蔽并相应地进行过滤。
df[df.isna().all(axis=1)]
a b
0 NaN NaN
使用您展示的示例,请尝试执行以下操作。在此处使用 isnull
函数。
mask1 = df['a'].isnull()
mask2 = df['b'].isnull()
df[mask1 & mask2]
以上答案是创建 2 个变量以便更好地理解。如果您想在 df 本身内部使用条件并且不想创建条件变量(在这种情况下为 mask1
和 mask2
),请尝试以下操作。
df[df['a'].isnull() & df['b'].isnull()]
输出如下。
a b
0 NaN NaN