gpt4 book ai didi

python - 如何根据列表的顺序为行赋值

转载 作者:行者123 更新时间:2023-12-01 08:13:16 25 4
gpt4 key购买 nike

我确信这个问题已经以另一种方式提出,但我想确保这个问题的措辞完全符合我的理解。我还在学习 pandas,所以请耐心等待。

我有 3 个数据帧共享一个公共(public) key 。我需要根据数据帧 C 的键值将数据帧 A 的列中的值分配到数据帧 B 的值中。为了更好地说明,这里是我的示例。

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 内的选项/链接关系。所以伪术语,可以写成:

dfB["LinkDiscripiton"] = dfA["描述"]->其中 dfB["LINK_ID"] == dfC["LINK_ID"] 且 dfA["OPT_ID"] == dfC["OPT_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 定义为: options= [["选项1", "铜牌"], ["选项2", "金牌"], ["选项3", "银牌"]] dfA = pd.DataFrame(选项, columns = ["选项", "描述"])

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

最佳答案

您可以使用pd.merge为了将三个数据帧合并到其相应的键上,然后保留属于 dfB 的列:

df_temp = dfA.merge(dfC, on='Option').merge(dfB, on = 'Link')[['Link','Description']]

Link Description
0 Link1 Description1
1 Link2 Description2
2 Link3 Description3

关于python - 如何根据列表的顺序为行赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105098/

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