使用下面的df1和df2,我希望创建df_new,其中包含来自df1的feat0、feat1和feat2,以及来自df2的相应值value_feat0、value_feat1和value_feat2。我还创建了df_new作为预期输出。
df1 = pd.DataFrame([['Age', 'Education-Num', 'Sex'],
['Sex','Education-Num','Age'],
['Education-Num','Age','Sex'],
['Age', 'Education-Num', 'Sex'],
['Age', 'Education-Num', 'Sex']],
columns=['feat0', 'feat1', 'feat2'])
df2 = pd.DataFrame([[39.0, 7, 13.0, 4, 1, 0, 4, 1, 2174.0, 0.0, 40.0, 39],
[50.0, 6, 13.0, 2, 4, 4, 4, 1, 0.0, 0.0, 13.0, 39],
[38.0, 4, 9.0, 0, 6, 0, 4, 1, 0.0, 0.0, 40.0, 39],
[53.0, 4, 7.0, 2, 6, 4, 2, 1, 0.0, 0.0, 40.0, 39],
[28.0, 4, 13.0, 2, 10, 5, 2, 0, 0.0, 0.0, 40.0, 5]],
columns=['Age', 'Workclass', 'EducationNum', 'MaritalStatus', 'Occupation',
'Relationship', 'Race', 'Sex', 'CapitalGain', 'CapitalLoss',
'Hoursperweek', 'Country'])
预期产出:
df_new = pd.DataFrame([['Age', 39, 'EducationNum', 13, 'Sex', 1],
['Sex',1, 'EducationNum',13, 'Age', 50],
['EducationNum',9, 'Age',38, 'Sex', 1],
['Age', 38, 'EducationNum', 7, 'Sex', 1],
['Age', 28, 'EducationNum', 13, 'Sex', 0]],
columns=['feat0', 'value_feat0', 'feat1', 'value_feat1', 'feat2', 'value_feat2'])
我尝试使用melt()并合并 Dataframe ,但无法成功。
1条答案
按热度按时间bd1hkmkf1#
您可以在
df1
的列上使用for
循环,然后使用此建议方法查找df2
中的值:输出:
或者,也可以使用不推荐使用的
lookup
方法(不推荐):注意:我在
df2
中使用列名Education-Num
是为了与df1
保持一致。