基于一个键将数据从 df 复制到多列中的另一个 df

2024-04-24

我有两个数据框,df1 和 df2。每个数据帧的唯一标识符是“ID”和“Prop_Number”。我需要将 df1 中的 Num1、2 和 3 列复制到 df2、1_Num 中的相应列... 但我不确定如何对多个列进行合并。我想将 df2 保留为 df2,而不是创建一个新的 df(因为我的真实数据在 df2 中有更多列),它将保持原样。

cols1 = ['ID', 'Num1', 'Num2', 'Num3']
data1 = [['33', '.853', '9834', '234'],
        ['87', '.372', '2345', '843'],
        ['15', '1.234','742', '821'],
        ['92', '1.957', '1234', '123'],
        ['13', '.943', '8427', '493'],
        ['67', '.852', '3421', '439']
       ]
df1 = pd.DataFrame(data=data1, columns=cols1)

cols2 = ['Prop_Number', '1_Num', '2_Num', '3_Num']
data2 = [['87', '', '', ''],
        ['33', '', '', ''],
        ['67', '','', ''],
        ['13', '', '', ''],
        ['92', '', '', ''],
        ['15', '', '', '']
       ]
df2 = pd.DataFrame(data=data2, columns=cols2)

我尝试过的是

df2['1_Num'] = np.where(df1['ID'] == df2['Prop_Number'], df1['Num1'],np.nan)


你可以试试这个:

cols1 = ['ID', 'Num1', 'Num2', 'Num3']
data1 = [['33', '.853', '9834', '234'],
        ['87', '.372', '2345', '843'],
        ['15', '1.234','742', '821'],
        ['92', '1.957', '1234', '123'],
        ['13', '.943', '8427', '493'],
        ['67', '.852', '3421', '439']
       ]
df1 = pd.DataFrame(data=data1, columns=cols1)

cols2 = ['Prop_Number', '1_Num', '2_Num', '3_Num']
data2 = [['87', '', '', ''],
        ['33', '', '', ''],
        ['67', '','', ''],
        ['13', '', '', ''],
        ['92', '', '', ''],
        ['15', '', '', '']
       ]
df2 = pd.DataFrame(data=data2, columns=cols2)

df2 = df2.set_index('Prop_Number')
df2.update(df1.rename(columns=dict(zip(df1.columns[1:],
                                       ['1_Num','2_Num','3_Num'])))
              .set_index('ID'))
df2 = df2.reset_index()
print(df2)

Output:

  Prop_Number  1_Num 2_Num 3_Num
0          87   .372  2345   843
1          33   .853  9834   234
2          67   .852  3421   439
3          13   .943  8427   493
4          92  1.957  1234   123
5          15  1.234   742   821

Details: renamedf1 列与 df2 列匹配并使用set_index, with update修改 df2.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于一个键将数据从 df 复制到多列中的另一个 df 的相关文章

随机推荐