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()
m = (estados['EDGE']!='') & (estados['EDGE'].notna())
estados['EDGE'][m]
您可以使用 NOT 运算符 ~
:
estados[~estados['EDGE'] == '']['EDGE'].dropna().unique()
或 使用.ne
:
estados[estados['EDGE'].ne('')]['EDGE'].dropna().unique()
我正在使用 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()
m = (estados['EDGE']!='') & (estados['EDGE'].notna())
estados['EDGE'][m]
您可以使用 NOT 运算符 ~
:
estados[~estados['EDGE'] == '']['EDGE'].dropna().unique()
或 使用.ne
:
estados[estados['EDGE'].ne('')]['EDGE'].dropna().unique()