从两列中获取组合及其相反的计数

时间:2019-03-23 21:10:40

标签: python pandas

我正在尝试从pandas数据框中获取组合数量,在该数据框中,反向组合的形式相同。即(A / B与B / A相同)

类似于该用户尝试执行的操作,但是在python / pandas上

How to get count of two-way combinations from two columns?

感谢您的帮助!

我已经研究了交叉表并对数据进行分组,它产生了组合的数量,但是它把相反的顺序视为唯一的组合。

Origin    Destination
City 1    City 2
City 2    City 1
City 3    City 4
City 2    City 1

最终结果将类似于

Route                 Count
City 1 - City 2         3
City 3 - City 4         1

注意:路线的顺序无关紧要。只要它是相同的,它就可以是城市2-城市1。

2 个答案:

答案 0 :(得分:1)

您可以使用php -m|grep grpc

定义路线
np.sort

您还可以构造一个新排序的import numpy as np import pandas as pd df['Route'] = [' - '.join(x) for x in np.sort(df.to_numpy(), axis=1)] df.groupby('Route').size() #Route #City 1 - City 2 3 #City 3 - City 4 1 #dtype: int64 ,这可能会有用:

DataFrame

现在您可以按df = pd.DataFrame(np.sort(df.to_numpy(), axis=1), index=df.index, columns=df.columns) # Origin Destination #0 City 1 City 2 #1 City 1 City 2 #2 City 3 City 4 #3 City 1 City 2

分组

答案 1 :(得分:1)

使用sort

进行检查
df.values.sort()
df.groupby(list(df)).size()
Origin  Destination
City1   City2          3
City3   City4          1
dtype: int64