Pandas:如何删除具有 nan 值的列


您可以使用以下方法从 pandas DataFrame 中删除具有 NaN 值的列:

方法 1:删除具有任何 NaN 值的列

 df = df. dropna (axis= 1 )

方法 2:删除包含所有 NaN 值的列

 df = df. dropna (axis= 1 ,how=' all ')

方法 3:删除 NaN 值数量最少的列

 df = df. dropna (axis= 1 ,thresh= 2 )

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': [np.nan, 'G', 'F', 'F', 'C', 'G'],
                   ' points ': [11, 28, 10, 26, 6, 25],
                   ' rebounds ': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})

#view DataFrame
print (df)

  team position points rebounds
0 A NaN 11 NaN
1 AG 28 NaN
2 AF 10 NaN
3 BF 26 NaN
4 BC 6 NaN
5 BG 25 NaN

示例 1:删除具有 NaN 值的列

以下代码显示如何删除具有 NaN 值的列:

 #drop columns with any NaN values
df = df. dropna (axis= 1 )

#view updated DataFrame
print (df)

  team points
0 to 11
1 to 28
2 to 10
3 B 26
4 B 6
5 B 25

请注意,位置篮板数列已被删除,因为它们都至少有一个 NaN 值。

示例 2:删除包含所有 NaN 值的列

以下代码显示如何删除具有所有 NaN 值的列:

 #drop columns with all NaN values
df = df. dropna (axis= 1 ,how=' all ')

#view updated DataFrame
print (df)

  team position points
0 A NaN 11
1 AG 28
2 AF10
3 BF 26
4 BC 6
5 BG 25

请注意,反弹列已被删除,因为它是唯一包含所有 NaN 值的列。

示例 3:删除 NaN 值数量最少的列

以下代码显示如何删除具有两个或多个NaN 值的列:

 #drop columns with at least two NaN values
df = df. dropna (axis= 1 ,thresh= 2 )

#view updated DataFrame
print (df)

  team position points
0 A NaN 11
1 AG 28
2 AF10
3 BF 26
4 BC 6
5 BG 25

请注意,反弹列已被删除,因为它是唯一具有至少两个 NaN 值的列。

注意:您可以在此处找到 pandas 中dropna()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

如何删除 Pandas 中的第一列
如何删除 Pandas 中的重复列
如何删除 Pandas 中除某些列之外的所有列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注