Python 查找反向/镜像对并指定对号
我试图找到相反的一对,并为这一对分配一个对号,但我被卡住了,无法从下面向前移动 df1: 我正在努力得到这个结果Python 查找反向/镜像对并指定对号,python,pandas,Python,Pandas,我试图找到相反的一对,并为这一对分配一个对号,但我被卡住了,无法从下面向前移动 df1: 我正在努力得到这个结果 col1 col2 pair 1 no. of records totalcount A B 1 2 7 B A 1 5 7 C D 2 4 10 D C 2
col1 col2 pair 1 no. of records totalcount
A B 1 2 7
B A 1 5 7
C D 2 4 10
D C 2 6 10
E F 3 4 4
G H 4 6 6
我尝试了这个方法,但它只返回true/false。
制作一个重复的数据帧df2并使用isin函数,但在将它们分组时被阻塞了很长时间
df1['row_matched'] = np.where((df1.col1+df1.col2).isin(df2.col2+ df2.col1), df2['row'], "")
非常感谢您的帮助 使用
col1、col2
组对的rank
,您可以使用set
In [37]: df['pair'] = (df.apply(lambda x: '-'.join(set(x[['col1', 'col2']])), 1)
.rank(method='dense').astype(int))
In [38]: df['totalcount'] = df.groupby('pair')['no.ofrecords'].transform('sum')
In [39]: df
Out[39]:
col1 col2 no.ofrecords pair totalcount
0 A B 2 1 7
1 B A 5 1 7
2 C D 4 2 10
3 D C 6 2 10
4 E F 4 3 4
5 G H 6 4 6
totalcount
怎么来?是成对+没有录音吗?
In [37]: df['pair'] = (df.apply(lambda x: '-'.join(set(x[['col1', 'col2']])), 1)
.rank(method='dense').astype(int))
In [38]: df['totalcount'] = df.groupby('pair')['no.ofrecords'].transform('sum')
In [39]: df
Out[39]:
col1 col2 no.ofrecords pair totalcount
0 A B 2 1 7
1 B A 5 1 7
2 C D 4 2 10
3 D C 6 2 10
4 E F 4 3 4
5 G H 6 4 6