如何在 pandas 数据框中查找包含除 NaN 以外的所有唯一值的列名?
How to find column names in pandas dataframe that contain all unique values except NaN?
我想从 pandas 数据框中查找包含除 NaN 之外的所有非重复项的列。
x y z
a 1 2 A
b 2 2 B
c NaN 3 D
d 4 NaN NaN
e NaN NaN NaN
列 "x" 和 "z" 除了 NaN 外没有重复值,所以我想把它们挑出来并创建一个新的数据框。
比较唯一值的长度和应用后的值的长度dropna()
。
试试这个代码。
import pandas as pd
import numpy as np
df = pd.DataFrame({"x":[1, 2, np.nan, 4, np.nan],
"y":[2, 2, 3, np.nan, np.nan],
"z":["A", "B", "D", np.nan, np.nan]})
for col in df.columns:
if len(df[col].dropna()) == len(df[col].dropna().unique()):
print(col)
让我们用nunique
m=df.nunique()==df.notnull().sum()
subdf=df.loc[:,m]
x z
a 1.0 A
b 2.0 B
c NaN D
d 4.0 NaN
e NaN NaN
m.index[m].tolist()
['x', 'z']
我想从 pandas 数据框中查找包含除 NaN 之外的所有非重复项的列。
x y z
a 1 2 A
b 2 2 B
c NaN 3 D
d 4 NaN NaN
e NaN NaN NaN
列 "x" 和 "z" 除了 NaN 外没有重复值,所以我想把它们挑出来并创建一个新的数据框。
比较唯一值的长度和应用后的值的长度dropna()
。
试试这个代码。
import pandas as pd
import numpy as np
df = pd.DataFrame({"x":[1, 2, np.nan, 4, np.nan],
"y":[2, 2, 3, np.nan, np.nan],
"z":["A", "B", "D", np.nan, np.nan]})
for col in df.columns:
if len(df[col].dropna()) == len(df[col].dropna().unique()):
print(col)
让我们用nunique
m=df.nunique()==df.notnull().sum()
subdf=df.loc[:,m]
x z
a 1.0 A
b 2.0 B
c NaN D
d 4.0 NaN
e NaN NaN
m.index[m].tolist()
['x', 'z']