python - 从两列中获取组合计数及其反转
问题描述
我正在尝试从 pandas 数据框中获取组合计数,其中它认为组合的反转形式相同。即(A/B 将与 B/A 相同)
类似于这个用户正在尝试做的事情,但是在 python/pandas 上
感谢您的帮助!
我探索了交叉表并对数据进行分组,它产生了组合的计数,但它认为相反的顺序是唯一的组合。
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,只要它算作相同即可。
解决方案
您可以使用定义路线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
您还可以构造一个新的 sorted 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
现在你可以分组['Origin', 'Destintion']
推荐阅读
- sql - 为什么浮点值只能在 where 条件下作为文本找到
- html - 如何在angular4和html中拆分otp的输入框?
- excel-formula - Excel - 重叠数据 - 数据透视表
- r - 如何将 IP 地址存储在 R 中,然后对其进行处理以提供 IP 位置?
- php - Mysql pdo 等于小于大于日期的字符
- mysql - MySQL JOIN 获取不存在的行
- java - Springboot ssl 信任库属性不起作用
- php - 如何在 ESPOCRM tpl 文件中获取 URL 参数?
- angular - 在 Angular 5 中使用 ngFor 过滤表
- excel - Excel复制粘贴2行但只移动一行