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 中执行其他常见任务: