Python 3.x 如何';。join()';在下面的Python代码中工作
有两个数据帧“左”和“右”。我正在数据帧上应用“.join”,更改参数“how”和“on”的默认值。我无法理解我得到以下结果的逻辑/方式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
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 knowon
参数应位于列或索引级别名称上,并且我提供的列名不存在于右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次,这在连接中不会发生。