天天看點

python list 查找子列_如何在Pandas資料幀(python)中查找哪些列包含...

更新:使用Pandas 0.22.0

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']

選擇那些列(包含至少一個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

老答案:

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']

選擇一個子集 – 包含至少一個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