如何在 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']