pandas 个具有条件的唯一值

pandas unique values with condition

我正在使用 pandas DataFrame,我需要遍历列的唯一值。 这些列可能包含我不想循环的值,例如 ''

通常我这样做:

edges = [edge for edge in estados['EDGE'].unique() if edge != '']
for edge in edges:
    pass

我的问题是是否有比理解列表更广泛的方式来构建列表。

喜欢:

estados['EDGE'].unique().exclude('')

谢谢

注意: 我寻找如下解决方案: 但是这些解决方案甚至不如我的简洁。

您可以使用pd.Series.mask with pd.Series.dropna and pd.Series.unique

m = estados['EDGE']==''
estados['EDGE'].mask(m).dropna().unique()

pd.Series.notna

m = (estados['EDGE']!='') & (estados['EDGE'].notna())

estados['EDGE'][m]

您可以使用 NOT 运算符 ~:

estados[~estados['EDGE'] == '']['EDGE'].dropna().unique()

使用.ne:

estados[estados['EDGE'].ne('')]['EDGE'].dropna().unique()