Python 如何将pandas作为SQL进行内部连接,遇到了下面的问题
我有两个df名为“df”,第二个名为“topwud” 当我连接这两个数据帧时,使用BOMCPNO和PRTNO作为连接列进行bt内部连接 像 然后我得到了这个数据帧 我不希望公共名称为PRTNO_x和PRTNO_y,我只希望在结果数据帧中保留PRTNO_x作为名称“PRTNO”,这是默认名称。 请帮帮我:)试试这个-Python 如何将pandas作为SQL进行内部连接,遇到了下面的问题,python,sql,pandas,dataframe,sklearn-pandas,Python,Sql,Pandas,Dataframe,Sklearn Pandas,我有两个df名为“df”,第二个名为“topwud” 当我连接这两个数据帧时,使用BOMCPNO和PRTNO作为连接列进行bt内部连接 像 然后我得到了这个数据帧 我不希望公共名称为PRTNO_x和PRTNO_y,我只希望在结果数据帧中保留PRTNO_x作为名称“PRTNO”,这是默认名称。 请帮帮我:)试试这个- pd.merge(df1, top_wud, on=['BOMCPNO', 'PRTNO']) 不过,这将只返回BOMCPNO和PRTNO在两个数据帧中都存在的值,因为默认合
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)
也可以尝试其他类型的连接,因为我不知道你到底想要什么,我认为它是左内
如果它解决了您的问题,请选中此选项。为什么不在生成结果后删除该列并重命名您想要的列?把它作为流程的一部分,还有其他方法吗?把BOMCPNO设置为df的索引,把PRTNO设置为top_wud的索引,然后对左右索引执行merge,pd.merge(df.set_index('BOMCPNO'),top_wud.set_index('PRTNO'),left_index=True,right_index=True)?
merged_df.drop_duplicates(cols=['BOMCPNO', 'PRTNO'],inplace=True)