【发布时间】:2018-03-04 18:56:17
【问题描述】:
如何有效地选择只有 1 个唯一值的 pandas 数据框列?
我知道 DataFrame 和 Series.nunique()
【问题讨论】:
标签: python pandas dataframe unique
如何有效地选择只有 1 个唯一值的 pandas 数据框列?
我知道 DataFrame 和 Series.nunique()
【问题讨论】:
标签: python pandas dataframe unique
我认为需要DataFrame.nunique 作为布尔掩码并通过loc 和boolean indexing 选择:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1] * 6,
'E':[5,3,6,9,2,4],
'F':list('aaaaaa')})
print (df)
A B C D E F
0 a 4 7 1 5 a
1 b 5 8 1 3 a
2 c 4 9 1 6 a
3 d 5 4 1 9 a
4 e 5 2 1 2 a
5 f 4 3 1 4 a
df = df.loc[:, df.nunique() == 1]
#alternatives
#df = df.loc[:, df.apply(lambda x: x.nunique()) == 1]
#df = df.loc[:, df.apply(lambda x: len(x.unique())) == 1]
print (df)
D F
0 1 a
1 1 a
2 1 a
3 1 a
4 1 a
5 1 a
【讨论】:
使用 DataFrame.uniques() 计算请求轴上的不同观察值。
df = pd.DataFrame({'A': list('abcdef'),
'B': [4, 5, 4, 5, 5, 4],
'C': [7, 8, 9, 4, 2, 3],
'D': [1] * 6,
'E': [5, 3, 6, 9, 2, 4],
'F': list('aaaaaa')})
print(df)
df.columns[df.nunique() <= 1]
【讨论】: