熊猫:如何合并两个数据框并使用第二个数据框中的值填充NaN值

洞穴:

我有一个熊猫数据框(df1),看起来像这样:

No     car          pl.       Value      Expected      
1      Toyota       HK        0.1        0.12      
1      Toyota       NY        0.2        NaN     
2      Saab         LOS       0.3        NaN      
2      Saab         UK        0.4        0.6       
2      Saab         HK        0.5        0.51     
3      Audi         NYU       0.6        NaN      
3      Audi         LOS       0.7        NaN      
4      VW           UK        0.8        NaN   
5      Audi         HK        0.9        NaN    

我还有另一个数据框(df2),如下所示:

No        pl.             Expected              
2         LOS              0.35      
3         NYU              0.62   
3         LOS              0.76    
5         HK               0.91     

我希望我的最终数据框看起来像这样:

No     car          pl.       Value      Expected      
1      Toyota       HK        0.1        0.12      
1      Toyota       NY        0.2        NaN     
2      Saab         LOS       0.3        0.35      
2      Saab         UK        0.4        0.6       
2      Saab         HK        0.5        0.51     
3      Audi         NYU       0.6        0.62      
3      Audi         LOS       0.7        0.76      
4      VW           UK        0.8        NaN   
5      Audi         HK        0.9        0.91    

我尝试了这个:

df = df1.fillna(df1.merge(df2, on=['No','pl.']))

但是df1在输出中保持不变

我在这里看到的问题是形状相同的数据框。当形状不同时,有没有办法做到这一点?

提前致谢!

耶斯雷尔:

使用带suffixes参数的左联接,然后Series.fillnaDataFrame.popfor和drop列替换缺少的值Expected_

df = df1.merge(df2, on=['No','pl.'], how='left', suffixes=('_',''))
df['Expected'] = df.pop('Expected_').fillna(df['Expected'])
print (df)
   No     car  pl.  Value  Expected
0   1  Toyota   HK    0.1      0.12
1   1  Toyota   NY    0.2       NaN
2   2    Saab  LOS    0.3      0.35
3   2    Saab   UK    0.4      0.60
4   2    Saab   HK    0.5      0.51
5   3    Audi  NYU    0.6      0.62
6   3    Audi  LOS    0.7      0.76
7   4      VW   UK    0.8       NaN
8   5    Audi   HK    0.9      0.91

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用熊猫从第二个数据框中过滤数据框中2列的值

使用第二个数据框中的值过滤数据框

数据框中的值介于第二个数据框中的值之间

将数据框中的列与R中第二个数据框中的重复值合并

使用数据框中的值作为键来替换第二个数据框中的值

PySpark:合并一个值(来自第一个数据框)介于两个值(来自第二个数据框)之间的数据框

如何使用python中的pandas仅从具有两个数据框的网页中选择第二个数据框?

熊猫:从第二个数据框更新列值

使用数据框中的行值选择第二个数据框中的列

Spark 合并两个数据帧并通过覆盖第二个数据帧中的值来创建单个数据帧

根据熊猫中第二个数据框的列值从一个数据框删除列

如何根据第二个中的可能值范围合并两个数据帧,但保留第一个中的值?

左合并两个数据框,仅填充熊猫的NaN值

从第二个数据框中查找值

熊猫使用数据框名称用ID替换第二个数据框中任何位置的数据

根据第二个数据框设置数据框的值

根据第二个数据框列中的匹配替换“数据框列”中的值

熊猫从第二个数据框中选择的列,其中另一个列的值存在于主数据框中

如何使用第二个数据框中的值填充新列,但如何使用Pandas依赖于当前数据框中不同的现有列

根据第二个数据框R上的索引替换数据框中的值

pandas:如果该值在第二个数据框中,则根据另一个数据框中的条件替换列中的值

通过在第二个数据框的列之间插入一个数据框的列来连接两个数据框

从数据框中提取两列并将它们与第二个数据框合并

根据第二个数据框的匹配列更新熊猫数据框

根据第二个数据框中的行在一个数据框中设置Pandas中的值

将1个数据框中的多个列中的值匹配到第二个数据框中的键并创建列

两个数据框,如果值在第二个 df 的范围内,则从一个 df 连接 ID 和位置

Spark(使用pyspark)使用一个数据框(结构化流)中的值查询静态数据框,并将第二个df中的行与第一个合并

如何加入两个熊猫数据框,使第二个表重复