首页 > 解决方案 > 如何在某个位置将列从一个数据帧插入/移植到另一个数据帧?

问题描述

我有两个数据框:

print(df1)

   A  B  C
0  1  5  9
1  2  6  8
2  3  7  7
3  4  8  6


print(df2)

   D  E  F
0  1  5  9
1  2  6  8
2  3  7  7
3  4  8  6

我想将列DEfromdf2插入df1after column B

最终结果应该是这样的:


   A  B  D  E  C
0  1  5  1  5  9
1  2  6  2  6  8
2  3  7  3  7  7
3  4  8  4  8  6

insert我知道熊猫的方法已经有了解决方案:

df1.insert(1, "D", df2["D"]) df1.insert(2, "E", df2["E"])

但是我想同时插入DE。就像将其“移植”到df1中,而不是具有多个插入。(在现实生活中要移植的数据更大,这就是为什么我要避免所有插入)

我的数据帧是 dict 格式,所以你可以使用 DataFrame.from_dict():


# df1

{'A': {0: 1, 1: 2, 2: 3, 3: 4},
 'B': {0: 5, 1: 6, 2: 7, 3: 8},
 'C': {0: 9, 1: 8, 2: 7, 3: 6}}

# df2

{'D': {0: 1, 1: 2, 2: 3, 3: 4},
 'E': {0: 5, 1: 6, 2: 7, 3: 8},
 'F': {0: 9, 1: 8, 2: 7, 3: 6}}

标签: pythonpandas

解决方案


您可以df1根据 column 的位置将数据框分成两部分B,然后将concat这些切片与D, E沿列轴的列

i = df1.columns.get_loc('B') + 1
pd.concat([df1.iloc[:, :i], df2[['D', 'E']], df1.iloc[:, i:]], axis=1)

   A  B  D  E  C
0  1  5  1  5  9
1  2  6  2  6  8
2  3  7  3  7  7
3  4  8  4  8  6

推荐阅读