我正在使用Pandas 2.1.3.
我正在try 连接多个索引级别上的两个DataFrame,其中一个索引级别具有NA.最小的可重现示例如下:
a = pd.DataFrame({
'idx_a':['A', 'A', 'B'],
'idx_b':['alpha', 'beta', 'gamma'],
'idx_c': [1.0, 1.0, 1.0],
'x':[10, 20, 30]
}).set_index(['idx_a', 'idx_b', 'idx_c'])
b = pd.DataFrame({
'idx_b':['gamma', 'delta', 'epsilon', np.nan, np.nan],
'idx_c': [1.0, 1.0, 1.0, 1.0, 1.0],
'y':[100, 200, 300, 400, 500]
}).set_index(['idx_b', 'idx_c'])
c = a.join(
b,
how='inner',
on=['idx_b', 'idx_c']
)
print(a)
x
idx_a idx_b idx_c
A alpha 1.0 10
beta 1.0 20
B gamma 1.0 30
print(b)
y
idx_b idx_c
gamma 1.0 100
delta 1.0 200
epsilon 1.0 300
NaN 1.0 400
1.0 500
print(c)
x y
idx_a idx_b idx_c
B gamma 1.0 30 100
1.0 30 400
1.0 30 500
我本以为会是:
print(c)
x y
idx_a idx_b idx_c
B gamma 1.0 30 100
为什么join
与这NaN
个值匹配?