熊猫:按另一个数据框的值添加列
Posted
技术标签:
【中文标题】熊猫:按另一个数据框的值添加列【英文标题】:Pandas: Add columns by values of another dataframe 【发布时间】:2022-01-23 21:08:52 【问题描述】:这是一个很奇怪的问题,但我不同意。
我确实有两个数据框,名为 df1 和 df2。有结构:
df1:
Eval Lang Average Model
df2:
Eval Lang Mean
模型列正好有六个不同的可用值,并且对于每种可能的组合(Eval、Lang),恰好存在这六个中的一个。我希望这六个值成为 df2 中的六个新列,在该位置都具有 df1['Average'] 的值。
所以得到的结构是:
Eval Lang Mean ModelAverage1 ModelAverage2 ModelAverage3 ModelAverage4 ModelAverage5 ModelAverage6
有没有一种简单而聪明的方法来做到这一点? 我不确定我在这里所做的是否是普通 panda 命令应该支持的。
==== 为了形象化,这里有一个例子: df1.csv:
Eval,Lang,Average,Model
F1,German,0.62,flairmulti
F1,German,0.7363,flairsingle
F1,German,0.72,bertmulti
F1,German,0.7527,bertsingle
F1,German,0.78,robertamulti
F1,German,0.7349,robertasingle
df2.csv
Eval,Lang,Mean
F1,German,0.54
Precision,German,0.54
Recall,German,0.53
结果会是这样的: 总计.csv
Eval,Lang,Mean,flairmulti,flairsingle,bertmulti,bertsingle,robertamulti,robertasingle
F1,German,0.54,0.62,0.7363,0.72,0.7527,0.78,0.7349
Precision,German,0.54,...
Recall,German,0.53,...
当然,Lang 和 Eval 也有其他值,但实际上,它们中的每一对都有我上面提到的“Model”这六个命名值。
【问题讨论】:
能否请您展示两个数据帧的小样本,并在此基础上展示您预期输出的小样本?这将使您的问题更容易可视化。谢谢你:) 给我五分钟 :) 完成。我希望这会有所帮助。我的问题实际上描述起来很奇怪。 :) 为任何至少了解我的愿望的人感到高兴 这不是一个很奇怪的要求。我明白了,我会看看我能做什么;) 【参考方案1】:您可以pivot
df2
获取Model
列中的值作为新列,并将Average
列中的值作为新值:
df3 = df2.merge(df1.pivot(index=['Eval', 'Lang'], columns='Model', values='Average').reset_index())
输出:
>>> df3
Eval Lang Mean bertmulti bertsingle flairmulti flairsingle robertamulti robertasingle
0 F1 German 0.54 0.72 0.7527 0.62 0.7363 0.78 0.7349
【讨论】:
你又一次救了我,非常感谢!枢轴命令是我正在寻找的最后一个缺失的部分 是的。它真的很强大,但有时学习如何使用很棘手;)以上是关于熊猫:按另一个数据框的值添加列的主要内容,如果未能解决你的问题,请参考以下文章