我正在使用pandas DataFrame,我需要遍历一列的唯一值。 这样的列可能包含我不想循环通过的值,例如“
我通常这样做:
edges = [edge for edge in estados['EDGE'].unique() if edge != '']
for edge in edges:
pass
我的问题是,是否有一种泛泛的方式来构建不同于理解列表的列表。
喜欢:
estados['EDGE'].unique().exclude('')
谢谢
注意: 我在寻找解决方案,例如: nunique excluding some values in pandas Python pandas unique value ignoring NaN 但是这些解决方案甚至比我的简洁。
答案 0 :(得分:1)
您可以使用NOT运算符~
:
estados[~estados['EDGE'] == '']['EDGE'].dropna().unique()
或使用.ne
:
estados[estados['EDGE'].ne('')]['EDGE'].dropna().unique()
答案 1 :(得分:0)
您可以将pd.Series.mask
与pd.Series.dropna
和pd.Series.unique
一起使用
m = estados['EDGE']==''
estados['EDGE'].mask(m).dropna().unique()
m = (estados['EDGE']!='') & (estados['EDGE'].notna())
estados['EDGE'][m]