python - 如何将一列中的所有值相互比较
问题描述
我需要将一列中的每个值与同一列中的每个值进行比较。我需要使用排列。
例如,我有以下数据框:
name | value
A | 2
B | 3
C | 1
D | 5
我需要像这样比较“名称”列上的每个字母:
name_1 | name_2 | value_1 | value_2
A | B | 2 | 3
A | C | 2 | 1
A | D | 2 | 5
B | A | 3 | 2
B | C | 3 | 1
B | D | 3 | 5
C | A | 1 | 2
C | B | 1 | 3
C | D | 1 | 5
D | A | 5 | 2
D | B | 5 | 3
D | C | 5 | 1
我怎样才能做到这一点?有没有熊猫的方法可以做到这一点?
提前致谢!
解决方案
您可以进行自合并和查询:
(df.assign(dummy=1)
.merge(df.assign(dummy=1), on='dummy', suffixes=['_1','_2'])
.query('name_1 != name_2')
.drop('dummy', axis=1)
.sort_index(axis=1)
)
输出:
name_1 name_2 value_1 value_2
1 A B 2 3
2 A C 2 1
3 A D 2 5
4 B A 3 2
6 B C 3 1
7 B D 3 5
8 C A 1 2
9 C B 1 3
11 C D 1 5
12 D A 5 2
13 D B 5 3
14 D C 5 1
推荐阅读
- jmeter - 如何在jmeter中找到100个用户登录Web应用程序并同时单击过滤器的持续时间?
- xml - Grouping nodes by value of grandchildren
- glsl - 将数据“预加载”到计算着色器的共享存储以加快读取访问是否有意义?
- python-3.x - 在里面执行带有 Selenium 的脚本
- c# - 异步任务的异常处理 whenall
- spring - Spring cloud configurable discovery client implementation
- python - Python:如何使用可以附加到的空值初始化嵌套列表
- c++ - Undefined symbols for architecture x86_64 -> symbol(s) not found for architecture x86_64
- c# - 可空类型 linq c#
- html - 分享联系人,html-input类型