gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:07:51 38 4
gpt4 key购买 nike

我有两个数据帧,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)

输出:

  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

详细信息: 重命名 df1 列以匹配 df2 列并使用 set_indexupdate 修改 df2。

关于python - 基于一个键将数据从 df 复制到多列中的另一个 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830402/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com