首页 > 解决方案 > 从不同大小的数据框中复制数据,有条件

问题描述

我有 2 个不同大小的数据帧 df1-df2(df2 的行和列比 df1 多)。

df1
unit  rate  
aa    nan    
cc    nan 

df2
unit  date  rate  type
aa    1     100   x1
bb    2     150   x2
cc    3     200   x3
dd    4     250   x4
  
    

我正在尝试将 df2['rate'] 中的值分配给 df1['rate'],在 df1['unit'] == df2['unit'] 的行中。

所需的输出是

df1
unit  rate  
aa    100
cc    200    
    

我尝试了不同的方法:

df1['rate'] = df2.loc[(df2['unit'].reset_index(drop=True) == df1['unit']), 'rate']

给我 ValueError: Can only compare the same-labeled Series objects

df1['rate'] = df2.loc[(df2['unit'].reset_index(drop=True).str == df1['unit'].str), 'rate']

给我假

我认为这是因为这两个数据框的大小不同。但是我不明白为什么它应该阻止它进行比较。我不知道如何从这里开始。

标签: pythonpandasdataframe

解决方案


您可以使用“合并”:

dfm = df1.merge(df2, left_on='unit', right_on='unit')
dfm = dfm.drop(columns=['date','type','rate_x'])
dfm = dfm.rename(columns={"rate_y": "rate"})
print(dfm)


  unit  rate
0   aa   100
1   cc   200

推荐阅读