我正在尝试合并两个大型DataFrame。这是一个玩具示例:
import pandas as pd
u_1 = pd.DataFrame({'cuid':[0,1,2,3,0,1,2,3], 'data':[100, 100, 100,100,1,2,3,4]})
u_2 = pd.DataFrame({'cuid':[1,2,3,4,5,6], 'extra':[1,2,3,4,5,6]})
print(u_1)
print(u_2)
print(pd.merge(u_1, u_2, on='cuid', how='left'))
这会产生预期的输出:
cuid data
0 0 100
1 1 100
2 2 100
3 3 100
4 0 1
5 1 2
6 2 3
7 3 4
cuid extra
0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
5 6 6
cuid data extra
0 0 100 NaN
1 1 100 1
2 2 100 2
3 3 100 3
4 0 1 NaN
5 1 2 1
6 2 3 2
7 3 4 3
仅使用左侧DataFrame(u_1)中的值作为键合并cuid列中的两个数据集。
当我将它带到更大的DataFrame时,它会分解并使条目数增加一倍。以下是我正在运行的行:
fmli_vars = test.copy().reset_index()
temp = memi_vars.loc[idx[:, 1], 'hrly_wge'].reset_index()
fmli_vars = pd.merge(fmli_vars, temp, how='left', on='cuid')
事实上,他们确实在合并之前排队了至少部分关键:
#test if they line up at all
print fmli_vars.['cuid'].isin(temp['cuid']).describe()
count 184297
mean 0.680787
std 0.466173
min False
25% 0
50% 1
75% 1
max True
Name: cuid, dtype: object
但是,观察次数增加了一倍。以下是fmli_vars['quarters_present'].describe()
之前和之后的输出:
count 436339.000000
mean 4.813072
std 0.389854
min 4.000000
25% 5.000000
50% 5.000000
75% 5.000000
max 5.000000
Name: quarters_present, dtype: float64
count 912755.000000
mean 4.826985
std 0.378260
min 4.000000
25% 5.000000
50% 5.000000
75% 5.000000
max 5.000000
Name: quarters_present, dtype: float64
我的印象是左合并不应该更改条目数量?任何人都可以解释我错过的东西吗?为什么会这样?!?