如何将pandas作为SQL进行内部连接,遇到了下面的问题

2024-10-01 09:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个df名为“df”,第二个名为“topwud”

df

topwud

当我连接这两个数据帧时,使用BOMCPNO和PRTNO作为连接列进行bt内部连接

second_level=pd.merge(df,top_wud ,left_on='BOMCPNO', right_on='PRTNO', how='inner').drop_duplicates()

然后我得到了这个数据帧

Result

我不希望公共名称为PRTNO_x和PRTNO_y,我只希望在结果数据帧中保留PRTNO_x作为名称“PRTNO”,这是默认名称。 请帮帮我:)


Tags: 数据名称dfontopmergelevelleft
1条回答
网友
1楼 · 发布于 2024-10-01 09:33:42

试试这个-

pd.merge(df1, top_wud, on=['BOMCPNO', 'PRTNO'])

不过,这将只返回BOMCPNO和PRTNO在两个数据帧中都存在的值,因为默认合并类型是内部合并

因此,您可以将这个合并的df大小与第一个进行比较,看看它们是否相同,如果相同,您可以对两列进行合并,或者只删除/重命名后缀为x/y的B列

我会花时间确定这些值是否确实相同并且存在于两个数据帧中,在这种情况下,您可能希望执行外部合并:

pd.merge(df1, df2, on=['A', 'B'], how='outer')

然后,您可以做的是删除重复的行(可能还有任何NaN行),这将为您提供一个干净的合并数据帧

merged_df.drop_duplicates(cols=['BOMCPNO', 'PRTNO'],inplace=True)

也可以尝试其他类型的连接,因为我不知道你到底想要什么,我认为它是左内

如果它解决了您的问题,请检查此项

相关问题 更多 >