如何在2个包含列表且具有不同大小的pandas数据框中交换行?

问题描述 投票:1回答:1

我有两个熊猫数据帧,df1和df2。每个数据框都有一个名为“路径”的列。每行都有一个列表。他们是这样的:

df1

Path
[OAK, ORD, FLL, PBG]
[OAK, SEA, FLL, PBG]
[OAK, AUS, FLL, PBG]
[OAK, LAS, FLL, PBG]
[OAK, LAX, FLL, PBG]
[OAK, DAL, FLL, PBG]
[OAK, MDW, FLL, PBG]
[OAK, BWI, FLL, PBG]

df1构造函数是:

{'Path': {0: ['OAK', 'ORD', 'FLL', 'PBG'],   2: ['OAK', 'SEA', 'FLL', 'PBG'],   4: ['OAK', 'AUS', 'FLL', 'PBG'],   6: ['OAK', 'LAS', 'FLL', 'PBG'],   8: ['OAK', 'LAX', 'FLL', 'PBG'],   10: ['OAK', 'DAL', 'FLL', 'PBG'],   12: ['OAK', 'MDW', 'FLL', 'PBG'],   14: ['OAK', 'BWI', 'FLL', 'PBG']}}

df2

Path
[OAK, DFW, FLL, PBG]
[OAK, JFK, FLL, PBG]
[OAK, MCI, FLL, PBG]
[OAK, PHX, FLL, PBG]
[OAK, DEN, FLL, PBG]
[OAK, HOU, FLL, PBG]
[OAK, ATL, FLL, PBG]

df2构造函数是:

{'Path': {1: ['OAK', 'DFW', 'FLL', 'PBG'], 3: ['OAK', 'JFK', 'FLL', 'PBG'], 5: ['OAK', 'MCI', 'FLL', 'PBG'], 7: ['OAK', 'PHX', 'FLL', 'PBG'], 9: ['OAK', 'DEN', 'FLL', 'PBG'], 11: ['OAK', 'HOU', 'FLL', 'PBG'], 13: ['OAK', 'ATL', 'FLL', 'PBG']}}

一个问题是,数据框中的行数不同。我想将df1每行的第二个元素与df2每行的第二个元素交换。如果没有相应的行,则不应修改或删除该行。所需的输出是:

df1

Path
[OAK, DFW, FLL, PBG]
[OAK, JFK, FLL, PBG]
[OAK, MCI, FLL, PBG]
[OAK, PHX, FLL, PBG]
[OAK, DEN, FLL, PBG]
[OAK, HOU, FLL, PBG]
[OAK, ATL, FLL, PBG]
[OAK, BWI, FLL, PBG]

df2

Path
[OAK, ORD, FLL, PBG]
[OAK, SEA, FLL, PBG]
[OAK, AUS, FLL, PBG]
[OAK, LAS, FLL, PBG]
[OAK, LAX, FLL, PBG]
[OAK, DAL, FLL, PBG]
[OAK, MDW, FLL, PBG]

如何在Python中完成?

python-3.x pandas list dataframe swap
1个回答
2
投票

将一系列列表转换为数据框后,您可以在此处使用combine_first():>

combine_first()
© www.soinside.com 2019 - 2024. All rights reserved.