我正在尝试使用 Pandas 在 python 中执行类似 join 的 sql 语句。我有这两个数据框df1:id name7 MPS10 MCM11 MIB12 NEW-MCM-DEV15 SAMS16 NEW-MCM-VITdf2:main_id numberOfNodes tier_id tier_name 7 2 29 MPS-Online 7 0 247 Offline-b24-settle 7 0 246 Offline-bank-data-feed 7 1 256 Offline-Citynet-Recon 7 1 433 WAS 10 8 26 APP 10 2 296 BATCH 10 2 358 BBO 我想根据 id (df1) 和 main_id(df2) 加入这 2 个数据帧。我想要的输出是main_id numberOfNodes tier_id tier_name name7 2 29 MPS-Online MPS7 0 247 Offline-b24-settle MPS7 0 246 Offline-bank-data-feed MPS 7 1 256 Offline-Citynet-Recon MPS7 1 433 WAS MPS10 8 26 APP MCM10 2 296 BATCH MCM10 2 358 BBO MCM我尝试使用df2.merge(df1, left_on='main_id', right_on='id')并尝试使用df2.join(df1, on=['main_id'], how='outer')但没有工作,因为 df1 上的名称字段未显示在输出中。有什么办法可以实现这一目标吗?
1 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
您可以使用熊猫功能concat
。
沿特定轴连接 Pandas 对象,沿其他轴使用可选的设置逻辑。
有一些方法可以使用它,首先以对问题提出的方式使用:
pd.concat([df1, df4], axis=1, sort=False)
在这种情况下,pandas 将用 NaN 填充缺失值。例子:
如果您更喜欢忽略缺失值的行,您可以使用:
pd.concat([df1, df4], axis=1, join='inner')
在这种情况下,数据帧之间的连接将作为 SQL 的内部连接工作。例子:
如果你想保留一些数据框结构只是用新列完成这个结构,你可以使用:
pd.concat([df1, df4], axis=1, join_axes=[df1.index])
在这种情况下,生成的数据帧将具有相同的行,df1
但有一些额外的df4
. 例子:
可以在此链接上找到更多信息。
添加回答
举报
0/150
提交
取消