gpt4 book ai didi

python / Pandas : Find matching values from two dataframes and return third value

转载 作者:行者123 更新时间:2023-12-04 01:36:22 25 4
gpt4 key购买 nike

我有两个不同的数据帧(df1,df2),它们的形状完全不同:df1: (64, 6); df2: (564, 9)。
df1 包含一列 (df1.objectdesc),其中的值(字符串)也可以在 df2 (df2.objdescription) 的列中找到。由于两个数据帧具有不同的形状,我必须使用 .isin() 来获取匹配值。然后我想从 df2 (df2.idname) 中的不同列中从匹配的行中获取第三个值并将它们添加到 df1 - 这就是我努力的地方。

示例数据集:

df1

      Content    objectdesc    TS_id
0 sdrgs 1_OG.Raum45 55
1 sdfg 2_OG.Raum23 34
2 psdfg GG.Raum12 78
3 sdfg 1_OG.Raum98 67

df2:
      Numb_val    object_count     objdescription    min   idname
0 463 9876 1_OG_Raum76 1 wq19
1 251 8324 2_OG.Raum34 9 zt45
2 456 1257 1_OG.Raum45 4 bh34
3 356 1357 2_OG.Raum23 3 if32
4 246 3452 GG.Raum12 5 lu76
5 345 8553 1_OG.Raum98 8 pr61

预期输出:
      Content    objectdesc    TS_id    idname
0 sdrgs 1_OG.Raum45 55 bh34
1 sdfg 2_OG.Raum23 34 if32
2 psdfg GG.Raum12 78 lu76
3 sdfg 1_OG.Raum98 67 pr61

到目前为止,这是我的代码:
def get_id(x, y):
for values in x,y:
if x['objectdesc'].isin(y['objdescription']).any() == True:
return y['idname']

df1['idname'] = get_id(df1, df2)

不幸的是,这仅提供了从索引 0 开始的 df2['idname'] 值,而不是真正从匹配的行中给我值。

任何帮助表示赞赏。谢谢!

最佳答案

可以试试这个:

df1.merge(df2, left_on='objectdesc', right_on='objdescription')[['Content', 'objectdesc', 'TS_id', 'idname']]

引用:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.merge.html

关于 python / Pandas : Find matching values from two dataframes and return third value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394690/

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