熊猫合并不正常。复制条目

时间:2015-10-07 09:34:58

标签: python pandas merge

我正在尝试合并两个大型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

我的印象是左合并不应该更改条目数量?任何人都可以解释我错过的东西吗?为什么会这样?!?

0 个答案:

没有答案