回答:
更新: Pandas 0.22.0の使用
新しいPandasバージョンには、新しいメソッド'DataFrame.isna()'および'DataFrame.notna()'があります。
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
列のリストとして:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
それらの列を選択するには(少なくとも1つのNaN
値を含む):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
古い答え:
isnull()を使用してみてください:
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
または@rootがより明確なバージョンを提案したように:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
サブセットを選択するには-少なくとも1つのNaN
値を含むすべての列:
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
、notna
?
列の数が多いデータセットでは、null値を含む列の数と含まない列の数を確認することをお勧めします。
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
たとえば、私のデータフレームには82列が含まれており、そのうちの19列には少なくとも1つのnull値が含まれていました。
さらに、null値の多いものに応じて、列と行を自動的に削除することもでき
ます。これは、これをインテリジェントに行うコードです。
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
注:上記のコードは、すべてのnull値を削除します。null値が必要な場合は、前にそれらを処理します。
これは私のために働いた、
1.少なくとも1つのnull値を持つ列を取得します。(列名)
data.columns[data.isnull().any()]
2.少なくとも1つのnull値を持つ、カウント付きの列を取得するため。
data[data.columns[data.isnull().any()]].isnull().sum()
[オプション] 3. nullカウントのパーセンテージを取得します。
data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]
df.isna().any()[lambda x: x]
私のために働く