Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x 如何';。join()';在下面的Python代码中工作_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何';。join()';在下面的Python代码中工作

Python 3.x 如何';。join()';在下面的Python代码中工作,python-3.x,pandas,Python 3.x,Pandas,有两个数据帧“左”和“右”。我正在数据帧上应用“.join”,更改参数“how”和“on”的默认值。我无法理解我得到以下结果的逻辑/方式 import pandas as pd left = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']}, index=['K0', 'K1', 'K2']) right = pd.DataFra

有两个数据帧“左”和“右”。我正在数据帧上应用“.join”,更改参数“how”和“on”的默认值。我无法理解我得到以下结果的逻辑/方式

import pandas as pd
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                      index=['K0', 'K1', 'K2']) 

right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
                    'D': ['D0', 'D2', 'D3']},
                      index=['K0', 'K2', 'K3'])

left.join(right,how='outer',on='A')
实际产量:

    A   B   C   D
K0  A0  B0  NaN NaN
K1  A1  B1  NaN NaN
K2  A2  B2  NaN NaN
K2  K0  NaN C0  D0
K2  K2  NaN C2  D2
K2  K3  NaN C3  D3

由于您指定
.join
应位于名为
A
的列上,而该列在
右侧的数据框中不存在,因此您获得了此输出

上的
参数应该是一个列或索引级别的名称,以便在另一个
数据帧的索引上联接,在您的情况下,由于
a
不是另一个数据帧的索引,因此不会发生联接,只是基于
外部联接将两个数据帧连接起来

相反,您不应该在
上使用
,因为默认情况下,
.join
使用
索引

import pandas as pd
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                      index=['K0', 'K1', 'K2']) 

right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
                    'D': ['D0', 'D2', 'D3']},
                      index=['K0', 'K2', 'K3'])

left.join(right,how='outer')

如果要基于列中的值进行合并,请改用。

您将获得此输出,因为您指定
.join
应位于名为
a
的列上,该列在
右侧的
数据框中不存在

上的
参数应该是一个列或索引级别的名称,以便在另一个
数据帧的索引上联接,在您的情况下,由于
a
不是另一个数据帧的索引,因此不会发生联接,只是基于
外部联接将两个数据帧连接起来

相反,您不应该在
上使用
,因为默认情况下,
.join
使用
索引

import pandas as pd
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                      index=['K0', 'K1', 'K2']) 

right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
                    'D': ['D0', 'D2', 'D3']},
                      index=['K0', 'K2', 'K3'])

left.join(right,how='outer')

如果您希望基于列中的值进行合并,请改用。

I know
on
参数应位于列或索引级别名称上,并且我提供的列名不存在于右df上(这是有意的)。但是我想知道python如何过滤/处理这个
left.join(right,how='outer',on='A')
的输出。此外,它不仅需要连接,因为结果df的索引包含“K2”4次,这在连接中不会发生。我知道
on
参数应该位于列或索引级别名称上,我提供的列名称在右df上不存在(这是有意的)。但是我想知道python如何过滤/处理这个
left.join(right,how='outer',on='A')
的输出。此外,它不仅需要连接,因为结果df的索引包含“K2”4次,这在连接中不会发生。