我有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
答案 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