熊猫合并问题

时间:2018-04-24 14:25:25

标签: python pandas merge group-by

我有两个数据帧

df1

    KO-ST  1_UID      2_Vloge
0   1976-_  200106897  200106897.0
1    991-_  200108737  200108737.0
2  2147---  200109776  200109776.0
3   2048-_  200300912  200300912.0
4   2194-_  200301057  200301057.0
5  2386---  200301312  200301312.0
6   2002-_  200301315  200301315.0
7   1324-_  200301573  200301573.0
8   1625-45  200301868  200301868.0
9   1625-_  200301868  200301868.0
...

df2
                              a                    b
SID  KO-ST                                     
10000002 851-601          288.0                288.0
10000003 851-1             68.0                 68.0
10000328 853-103           64.5                 64.5
10000583 861-25            30.1                 30.1
10001002 2590-1            96.7                178.9
10001004 2593-2           349.2                349.2
10001005 2593-3           282.0                295.2
10001006 2593-4           121.5                121.5
10001008 2593-6           109.3                110.3
10001009 2593-7             9.9                  9.9
...

行数超过500.000,其中KO-ST是唯一的,SID可以重复。我正在尝试对它们进行分组,并重复列ab中的值。 KO-ST的值是唯一的,在10%的情况下 - 不完美,这种情况(例如1324 -___)在df2中没有匹配。

我的初始代码是

REN_ES = pd.merge(df1, df2, left_index=True, on = 'KO-ST')

但是我收到了一个错误:

KeyError: 'KO-ST'

我在哪里弄错了? df1是导入2个csv文件并合并和合并某些值的结果。为了便于数据处理,将列KO-ST添加为具有函数的两列的组合:

DS_STA['KO-ST'] =DS_STA['KO_SIFKO'].map(str) + "-" + DS_STA['STEV'].map(str)

KO-SIFKOSTEV是整数,因此是代码。我添加了这个,因为我怀疑识别数据类型有问题。

1 个答案:

答案 0 :(得分:2)

df2具有多索引,“KO-ST”不是列名。 left_index=True覆盖on'KO-ST",请将其删除。试试:

REN_ES = pd.merge(df1, df2.reset_index(), on = 'KO-ST')