python删除Dataframe中全部为null的列
时间: 2024-02-21 12:59:31 浏览: 26
你可以使用 `dropna` 方法,设置 `axis=1` 参数来删除全部为null的列。示例代码如下:
```python
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [None, None, None, None],
'C': [None, 5, 6, None],
'D': [7, 8, 9, 10]})
# 删除全部为null的列
df.dropna(axis=1, how='all', inplace=True)
print(df)
```
输出结果:
```
A C D
0 1 NaN 7
1 2 5.0 8
2 NaN 6.0 9
3 4 NaN 10
```
在上述示例中,`dropna` 方法中的 `how='all'` 参数表示只删除全部为null的列。`inplace=True` 表示直接修改原始DataFrame。
相关问题
python删除Dataframe每行或每列中,全部是100%和null的行或列
可以使用 `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` 的行。
python 取 dataframe 中某列不为 NaN 的行
可以使用pandas库中的dropna()函数来删除包含NaN值的行,也可以使用notnull()函数来获取某列不为NaN的行的布尔值,然后使用布尔值索引来获取对应的行。
以下是两种方法的示例代码:
方法一:使用dropna()函数删除包含NaN值的行
```python
import pandas as pd
# 创建示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3, None], 'B': [4, None, 6, 7]})
# 使用dropna()函数删除包含NaN值的行
df = df.dropna(subset=['A'])
# 输出结果
print(df)
```
输出:
```
A B
0 1.0 4.0
1 2.0 NaN
2 3.0 6.0
```
方法二:使用notnull()函数获取某列不为NaN的行的布尔值
```python
import pandas as pd
# 创建示例DataFrame
df = pd.DataFrame({'A': [1, 2, 3, None], 'B': [4, None, 6, 7]})
# 使用notnull()函数获取某列不为NaN的行的布尔值
mask = df['A'].notnull()
# 使用布尔值索引获取对应的行
df = df[mask]
# 输出结果
print(df)
```
输出:
```
A B
0 1.0 4.0
1 2.0 NaN
2 3.0 6.0
```