gpt4 book ai didi

Python - Pandas 在自联接(合并)后删除行

转载 作者:行者123 更新时间:2023-12-04 08:05:45 25 4
gpt4 key购买 nike

类似于这个问题:Pandas merge removing duplicate rows
我正在使用 Python Pandas -
输入:

df = pd.DataFrame({
'type':['a','b','c','d','e'],
'value':[100,200,300,400,500]})
我想自行加入此列表:
df_merge = pd.merge(df, df,on=['type'])
但我只想保留下面的行:
type_x  value_x type_y  value_y
a 100 b 200
a 100 c 300
a 100 d 400
a 100 e 500
b 200 c 300
b 200 d 400
b 200 e 500
c 300 d 400
c 300 e 500
d 400 e 500
我怎样才能在 Pandas 中做到这一点?感谢您的帮助!

最佳答案

丑陋,但完成工作:

import pandas as pd
df = pd.DataFrame({
'type':['a','b','c','d','e'],
'value':[100,200,300,400,500]})

import itertools
combinations = pd.DataFrame(list(itertools.combinations(df['type'], 2)), columns=['type_x', 'type_y'])

combinations = pd.merge(combinations, df, left_on='type_x', right_on='type') \
.drop(columns=['type']) \
.rename(columns={'value': 'value_x'})
combinations = pd.merge(combinations, df, left_on='type_y', right_on='type') \
.drop(columns=['type']) \
.rename(columns={'value': 'value_y'})
combinations



类型_x
类型_y
值_x
值_y


0
一种

100
200

1
一种
C
100
300

2

C
200
300

3
一种
d
100
400

4

d
200
400

5
C
d
300
400

6
一种
电子
100
500

7

电子
200
500

8
C
电子
300
500

9
d
电子
400
500

关于Python - Pandas 在自联接(合并)后删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66230118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com