python - 如何在某个位置将列从一个数据帧插入/移植到另一个数据帧?
问题描述
我有两个数据框:
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
我想将列D
和E
fromdf2
插入df1
after 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"])
但是我想同时插入D
和E
。就像将其“移植”到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}}
解决方案
您可以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
推荐阅读
- java - 如何在 WebServiceTemplate 中检索有关证书的信息?
- c# - 记住 Xamarin Forms 条目中的文本
- python - 如何在 Python 中保存 matplotlib 子图?
- r - 如何从 postgresql 更快地将一百万条记录提取到 Shiny R 中?
- ios - 使用 Firebase 数据消息终止应用程序时未收到 iOS 推送通知
- android - 找不到符号导入 com.google.android.gms.R
- function - Haskell 中的 $ 是什么,以及如何将函数应用于函数
- xamarin.forms - ListView 未正确显示标签
- fortran - PGI 编译器使用 fortran 类型绑定过程创建错误
- java - 在调用 JAX-RS Rest API 方法时出现 404 Not Found