我有一个两列的 Dataframe ; source
和target
。我想要检测逆行,即对于一对值(source, target)
,如果存在一对值(target, source)
,则将True
分配给新列。
我的尝试:
cols = ['source', 'target']
_cols = ['target', 'source']
sub_edges = edges[cols]
sub_edges['oneway'] = sub_edges.apply(lambda x: True if x[x.isin(x[_cols])] else False, axis=1)
2条答案
按热度按时间u5i3ibmn1#
您可以使用与示例中类似的逻辑应用lambda函数。我们检查dataframe中是否有任何行具有反向的源/目标对。
顺便说一句,列名“oneway”在我看来与你的问题中描述的逻辑相反,但是要改变这一点,我们可以删除lambda函数中的
not
。代码
输出
3j86kqsm2#
另一个稍微快一点的方法,使用pandas pivot和melt。
这将显示你的边列表中的第一阶循环。