Pandas:合并后的空列

时间:2017-03-03 12:43:10

标签: python pandas

我有两个数据帧

                               ID     qsex age ranges       RuCitySize  \
0    5708cd4861a825b2e961347aff150f87  Женский      18-24      Миллионники   
1    c88b75faa29244a3ca71c8d148360e53  Мужской      18-24      Миллионники   
2    c6db9e72cc44b5109b349a47a547ae30  Мужской      25-34  Санкт-Петербург   
3    2bf305920d45ec9cd29c14153e6fcfd3  Женский      18-24      Миллионники   
4    0caf8723a6338314f8eb139b9b524935  Женский      25-34           Москва   
5    0b03191a3c8a7440e210b7315168e78c  Женский      13-17  Санкт-Петербург   
6    e9fdee324a86022a5177afc6d4826149  Мужской      18-24          500-млн   
7    8c2ae8e70e13321662a0e3e1050d5b09  Женский      25-34      Миллионники   
8    d0da39c4b854ee8a45058c8e2772e42b  Женский      18-24      Миллионники   
9    d508a21d4f6a64db902ff18c33084578  Женский      18-24      Миллионники   
10   70acb11b17c6d19b1f943f1832835f10  Женский      18-24      Миллионники   
11   727ff3273098c0a809a110293516cadf  Женский      18-24           Москва   
12   23458f63044f42075f1531df6d61c944  Женский      18-24             <100

       qsex age ranges       RuCitySize  FOM_quota
0   Женский      18-24          100-500   3.680865
1   Женский      18-24          500-млн   1.764538
2   Женский      18-24      Миллионники   2.295797
3   Женский      18-24           Москва   1.470449
4   Женский      18-24  Санкт-Петербург   0.673560
5   Женский      25-34          100-500   6.422541
6   Женский      25-34          500-млн   2.570914
7   Женский      25-34      Миллионники   3.709325
8   Женский      25-34           Москва   2.457072
9   Женский      25-34  Санкт-Петербург   1.460962
10  Женский      35-44          100-500   5.673086
11  Женский      35-44          500-млн   2.172469
12  Женский      35-44      Миллионники   2.836543
13  Женский      35-44           Москва   2.400152

我需要合并它。 我试着用

quota = pd.merge(quota, fom, how='left', on=['qsex', 'age ranges', 'RuCitySize'])

但是列FOM_quota是空的。 如何统一该数据框并使用数值获取列FOM_quota

1 个答案:

答案 0 :(得分:1)

您的代码适用于给定的样本DF:

In [116]: pd.merge(d1, d2, how='left', on=['qsex', 'age ranges', 'RuCitySize'])
Out[116]:
                                  ID     qsex age ranges       RuCitySize  FOM_quota
0   5708cd4861a825b2e961347aff150f87  Женский      18-24      Миллионники   2.295797
1   c88b75faa29244a3ca71c8d148360e53  Мужской      18-24      Миллионники        NaN
2   c6db9e72cc44b5109b349a47a547ae30  Мужской      25-34  Санкт-Петербург        NaN
3   2bf305920d45ec9cd29c14153e6fcfd3  Женский      18-24      Миллионники   2.295797
4   0caf8723a6338314f8eb139b9b524935  Женский      25-34           Москва   2.457072
5   0b03191a3c8a7440e210b7315168e78c  Женский      13-17  Санкт-Петербург        NaN
6   e9fdee324a86022a5177afc6d4826149  Мужской      18-24          500-млн        NaN
7   8c2ae8e70e13321662a0e3e1050d5b09  Женский      25-34      Миллионники   3.709325
8   d0da39c4b854ee8a45058c8e2772e42b  Женский      18-24      Миллионники   2.295797
9   d508a21d4f6a64db902ff18c33084578  Женский      18-24      Миллионники   2.295797
10  70acb11b17c6d19b1f943f1832835f10  Женский      18-24      Миллионники   2.295797
11  727ff3273098c0a809a110293516cadf  Женский      18-24           Москва   1.470449
12  23458f63044f42075f1531df6d61c944  Женский      18-24             <100        NaN

所以很可能你的真实数据中没有匹配的行...

注意:可能有不同的原因。例如前导或尾随空格,不同的dtypes等。