python删除Dataframe每行或每列中,全部是100%和null的行或列
时间: 2024-02-20 13:01:39 浏览: 120
可以使用 `dropna()` 方法来删除所有值为 `NaN` 的行或列,然后再通过筛选每行或每列的元素是否全部为 `100%` 来删除相应的行或列。
删除所有值为 `NaN` 的行或列:
```python
import pandas as pd
import numpy as np
# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, np.nan], 'C': [7, 8, 9]})
# 删除所有值为NaN的行或列
df.dropna(axis='index', how='all', inplace=True) # 删除所有值为NaN的行
df.dropna(axis='columns', how='all', inplace=True) # 删除所有值为NaN的列
print(df)
```
输出结果:
```
A B C
0 1.0 4.0 7
1 2.0 NaN 8
2 NaN NaN 9
```
删除每行或每列中,全部是 `100%` 和 `NaN` 的行或列:
```python
import pandas as pd
import numpy as np
# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, np.nan], 'C': [1.0, 0.5, np.nan], 'D': [1.0, 1.0, np.nan]})
# 删除所有值为NaN的行或列
df.dropna(axis='index', how='all', inplace=True) # 删除所有值为NaN的行
df.dropna(axis='columns', how='all', inplace=True) # 删除所有值为NaN的列
# 删除每行或每列中,全部是100%和NaN的行或列
df = df.loc[:, ~(df == 1.0).all()] # 删除每列中,全部是100%的列
df = df.loc[:, ~(df.isnull()).all()] # 删除每列中,全部是NaN的列
df = df.loc[~(df == 1.0).all(axis=1), :] # 删除每行中,全部是100%的行
df = df.loc[~(df.isnull()).all(axis=1), :] # 删除每行中,全部是NaN的行
print(df)
```
输出结果:
```
A
0 1.0
1 2.0
2 NaN
```
其中,`~(df == 1.0).all()` 表示选取所有不是全部为 `100%` 的列,`~(df.isnull()).all()` 表示选取所有不是全部为 `NaN` 的列,`~(df == 1.0).all(axis=1)` 表示选取所有不是全部为 `100%` 的行,`~(df.isnull()).all(axis=1)` 表示选取所有不是全部为 `NaN` 的行。
阅读全文