pandas使用多个键

时间:2018-04-05 10:00:27

标签: python pandas dataframe

我有2个数据帧,第一个数据帧中的[Trade]列有3个NaN值, 我需要用referenc数据帧填充它们,你可以在下面看到第一个df。 您可以使用各种方法填充NaN值。加入,合并,连接,替换,无论哪种方式都很容易。 谢谢

    Trade        ID     Toy_company
0   D255/FE     192     Duplo
1   L217/SN     255     Duplo
2   NaN         195     Lego
3   NaN         256     Duplo
4   D255/FE     192     Duplo
5   D255/FE     192     Duplo
6   D250/AT     192     Duplo
7   D250/AT     192     Duplo
8   L195/AE     195     Lego
9   NaN         195     Lego
10  L256/PE     256     Lego

参考数据框:

   Trade_ID     Item    Company
0   D255/FE     192     Duplo
1   D217/SN     255     Duplo
2   L12A/BA     195     Lego
3   L999/CC     256     Lego

要求: 1.仅根据参考数据框中的信息填写NaN值,在两个键上:Item + Company。如果无法引用,请保留NaN。 2.不要更正任何现有信息,只影响NaN值

所以最终的结果应该是:

        Trade        ID     Toy_company
    0   D255/FE     192     Duplo
    1   L217/SN     255     Duplo
    2   L12A/BA     195     Lego
    3   NaN         256     Duplo
    4   D255/FE     192     Duplo
    5   D255/FE     192     Duplo
    6   D250/AT     192     Duplo
    7   D250/AT     192     Duplo
    8   L195/AE     195     Lego
    9   L12A/BA     195     Lego
    10  L256/PE     256     Lego

1 个答案:

答案 0 :(得分:2)

您可以使用merge()方法:

In [347]: d1['Trade'] = (d1['Trade'].fillna(
                             d1.merge(d2.rename(columns={'Item':'ID','Company':'Toy_company'}),
                                      how='left')['Trade_ID']))

In [348]: d1
Out[348]:
      Trade   ID Toy_company
0   D255/FE  192       Duplo
1   L217/SN  255       Duplo
2   L12A/BA  195        Lego
3       NaN  256       Duplo
4   D255/FE  192       Duplo
5   D255/FE  192       Duplo
6   D250/AT  192       Duplo
7   D250/AT  192       Duplo
8   L195/AE  195        Lego
9   L12A/BA  195        Lego
10  L256/PE  256        Lego