Fer*_* F. 3 python dataframe pandas
我需要将一列中的每个值与同一列中的每个值进行比较。我需要使用排列。
例如,我有以下数据框:
name | value
A | 2
B | 3
C | 1
D | 5
Run Code Online (Sandbox Code Playgroud)
我需要像这样将“名称”列上的每个字母相互比较:
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
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?有没有 Pandas 的方法来做到这一点?
提前致谢!
您可以进行自我合并和查询:
(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)
)
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |