python-3.x - 结合两个长度不等的熊猫数据框/表
问题描述
我有两个不同长度的数据框:
df1: df2:
Column1 Column2 ColumnA ColumnG ColumnSG
0 ab1 bc1 ab1 A AA
1 ab2 ab5 bc1 B BB
2 ab3 bc4 ab3 C CC
3 ab4 ab5 ab1 D DD
4 ab5 ab1 ab5 E EE
bc4 F FF
ab2 G GG
ab4 H HH
我想要一个看起来像这样的输出:
df1:
到目前为止我尝试了什么?
for row in df1, df2:
if df1[Column1] == df2[ColumnA]:
df1[ColumnG1] = df2[ColumnG]
df1[ColumnSG1] = df2[ColumnSG]
但是,这给了我一个错误说:
ValueError: Can only compare identically-labeled Series objects
我该如何解决这个问题?
解决方案
是否合并两次:
(df1.merge(df2.rename(columns={"ColumnA":'Column1'}), on='Column1',how='left')
.merge(df2.rename(columns={'ColumnA':'Column2'}), on='Column2',how='left',
suffixes=['1','2'])
)
输出:
Column1 Column2 ColumnG1 ColumnSG1 ColumnG2 ColumnSG2
0 ab1 bc1 A AA B BB
1 ab1 bc1 D DD B BB
2 ab2 ab5 G GG E EE
3 ab3 bc4 C CC F FF
4 ab4 ab5 H HH E EE
5 ab5 ab1 E EE A AA
6 ab5 ab1 E EE D DD
推荐阅读
- c# - 从列表视图填充 xml 的 C# 问题
- javascript - react-select error 未捕获错误:元素类型无效
- spring-boot - Salesforce REST api 使用带有 Spring WebClient 的反应器
- javascript - 如何删除 React Hooks / Redux 应用程序中的特定列表项?
- php - include in $ 如何在代码中嵌入 include?
- java - Java中的Sqlite“数据库锁定”错误以及如何更新TableView
- javascript - 如何将图像放置在正方形画布内?
- visual-c++ - VS 2019 无网络远程调试?
- python-3.x - 在行标签上对数据框中的值求和
- javascript - 使用 setTimeOut 和 Promise 等待来自异步函数的值