Select 包含最有效值的数据框列
Select dataframe columns which contain the most valid values
我有我的数据框:
我想创建这个数据框的一个子集,其中包含最少 NaN 值(即最“有效”值)的列
在这种情况下,我只会 select“A3”列,因为只有一个 NaN,而其他列中有 3 个。
如果有两列(或更多列)具有相同数量的 NaN 值,则只 select 其中一列(例如第一列无关紧要)。
创建数据框的代码:
df = pd.DataFrame({"A1":[np.NaN,1,0,0,np.NaN,0,1,np.NaN,0,0,0,1],
"A2":[0,1,np.NaN,0,1,np.NaN,1,0,np.NaN,0,0,1],
"A3":[0,1,np.NaN,0,1,0,1,0,0,0,0,2]})
df
您可以在您的列上使用 pd.isnull(df['A']).sum() 并通过一些逻辑来解决问题NaN 最少的列。
z = list()
for column in df:
z.append(pd.isnull(df[column]).sum())
list(df.iloc[:,z.index(min(z))].values)
[0.0, 1.0, nan, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0]
您可以使用 pd.isnull
和 .sum()
总结每列中空值的数量,然后使用 .idxmin()
和 select 选择计数最少的列只是数据框中的那一列:
df[pd.isnull(df).sum().idxmin()]
输出:
0 0.0
1 1.0
2 NaN
3 0.0
4 1.0
5 0.0
6 1.0
7 0.0
8 0.0
9 0.0
10 0.0
11 2.0
Name: A3, dtype: float64
我有我的数据框:
我想创建这个数据框的一个子集,其中包含最少 NaN 值(即最“有效”值)的列
在这种情况下,我只会 select“A3”列,因为只有一个 NaN,而其他列中有 3 个。
如果有两列(或更多列)具有相同数量的 NaN 值,则只 select 其中一列(例如第一列无关紧要)。
创建数据框的代码:
df = pd.DataFrame({"A1":[np.NaN,1,0,0,np.NaN,0,1,np.NaN,0,0,0,1],
"A2":[0,1,np.NaN,0,1,np.NaN,1,0,np.NaN,0,0,1],
"A3":[0,1,np.NaN,0,1,0,1,0,0,0,0,2]})
df
您可以在您的列上使用 pd.isnull(df['A']).sum() 并通过一些逻辑来解决问题NaN 最少的列。
z = list()
for column in df:
z.append(pd.isnull(df[column]).sum())
list(df.iloc[:,z.index(min(z))].values)
[0.0, 1.0, nan, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0]
您可以使用 pd.isnull
和 .sum()
总结每列中空值的数量,然后使用 .idxmin()
和 select 选择计数最少的列只是数据框中的那一列:
df[pd.isnull(df).sum().idxmin()]
输出:
0 0.0
1 1.0
2 NaN
3 0.0
4 1.0
5 0.0
6 1.0
7 0.0
8 0.0
9 0.0
10 0.0
11 2.0
Name: A3, dtype: float64