我正在尝试使用pandas在python中执行类似join的sql语句。
我有这两个数据框
df1:
id name
7 MPS
10 MCM
11 MIB
12 NEW-MCM-DEV
15 SAMS
16 NEW-MCM-VIT
df2:
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)加入这两个数据框。
我想要的输出是
main_id numberOfNodes tier_id tier_name name
7 2 29 MPS-Online MPS
7 0 247 Offline-b24-settle MPS
7 0 246 Offline-bank-data-feed MPS
7 1 256 Offline-Citynet-Recon MPS
7 1 433 WAS MPS
10 8 26 APP MCM
10 2 296 BATCH MCM
10 2 358 BBO MCM
我尝试使用
df2.merge(df1, left_on='main_id', right_on='id')
并尝试使用
df2.join(df1, on=['main_id'], how='outer')
但没有任何作用,因为df1上的名称字段未显示在输出中。我有什么办法可以做到这一点?
答案 0 :(得分:1)
您可以使用熊猫函数concat
。
沿着特定的轴连接熊猫对象,并沿其他轴连接可选的设置逻辑。
有一些使用方式,首先按照问题的方式使用:
pd.concat([df1, df4], axis=1, sort=False)
在这种情况下,熊猫将使用NaN填充缺失值。示例:
如果您希望忽略具有缺失值的行,则可以使用:
pd.concat([df1, df4], axis=1, join='inner')
在这种情况下,数据框之间的联接将作为SQL上的内部联接。示例:
如果您想保留一些数据框结构,只是用新列完成该结构,则可以使用:
pd.concat([df1, df4], axis=1, join_axes=[df1.index])
在这种情况下,结果数据帧将具有df1
的相同行,但具有df4
的一些额外的列。示例:
可以在this link上找到更多信息。