我肯定这个问题是用另一种方式提出来的,但我想确定这个词的措辞和我的理解完全一致。我还在学熊猫呢,你放心吧
我有3个数据帧共享一个公共密钥。我需要根据dataframec的键值将dataframea列中的值赋给dataframeb的值。为了更好地说明这是我的例子
options= [["Option1", "Description1"], ["Option2", "Description2"], ["Option3", "Description3"]]
dfA = pd.DataFrame(options, columns = ["Option", "Description"])
links= [["Link1", "LinkDescription1"], ["Link2", "LinkDescription2"], ["Link3", "LinkDescription3"]]
dfB = pd.DataFrame(links, columns = ["Link", "LinkDescription"])
master_ledger = [["Option1", "Link1"], ["Option2", "Link2"], ["Option3", "Link3"]]
dfC = pd.DataFrame(master_ledger, columns = ["Option", "Link"])
查看每个DF,我们看到:
dfA
Out[14]:
Option Description
0 Option1 Description1
1 Option2 Description2
2 Option3 Description3
dfB
Out[15]:
Link LinkDescription
0 Link1 LinkDescription1
1 Link2 LinkDescription2
2 Link3 LinkDescription3
dfC
Out[16]:
Option Link
0 Option1 Link1
1 Option2 Link2
2 Option3 Link3
我要做的是将dfA中的选项描述中的值赋给DFB中的LinkDescription,但是基于dfC中的选项/链接关系。所以psuedo术语,可以写成:
dfB[“linkdescription”]=dfA[“Description”] -&燃气轮机;其中dfB[“LINK\u ID”]==dfC[“LINK\u ID”]和dfA[“OPT\u ID”]==dfC[“OPT\u ID”]
预期的更改将应用于dfB,如下所示:
dfB
Out[15]:
Link LinkDescription
0 Link1 Description1
1 Link2 Description2
2 Link3 Description3
我真的不知道如何处理这个问题,所以我没有我以前的方法的例子。谢谢你的帮助
更新#
多亏了Yatu的合并建议,我找到了以下方法来实现这个技巧,并将选项描述分配到dfB的链接描述中:
df_temp = dfA.merge(dfC, on='Option')
df_temp.merge(dfB, on = 'Link')[['Link','Description']]
dfB[["Link", "LinkDescription"]] = df_temp[["Link", "Description"]]
dfB:
Out[63]:
Link LinkDescription
0 Link1 Description1
1 Link3 Description2
2 Link2 Description3
也只是为了更好地解释期望的输出。如果我将dfA定义为: 选项=[[“选项1”,“青铜色”],[“选项2”,“金色”],[“选项3”,“银色”]] dfA=pd.DataFrame(选项,列=[“选项”,“描述”])
dfA
Out[68]:
Option Description
0 Option1 Bronze
1 Option2 Gold
2 Option3 Silver
然后dfB将更改为:
Out[63]:
Link LinkDescription
0 Link1 Bronze
1 Link3 Gold
2 Link2 Silver
您可以使用^{} 将三个数据帧合并到它们相应的键上,然后保留属于
dfB
的列:相关问题 更多 >
编程相关推荐