Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pandas作为SQL进行内部连接,遇到了下面的问题_Python_Sql_Pandas_Dataframe_Sklearn Pandas - Fatal编程技术网

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

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在两个数据帧中都存在的值,因为默认合

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

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

然后我得到了这个数据帧

我不希望公共名称为PRTNO_x和PRTNO_y,我只希望在结果数据帧中保留PRTNO_x作为名称“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)