在单独的数据框中匹配具有多个标签的数据

NclsK

我有两个表,或者更确切地说,熊猫Dataframes,calls并且tags看起来像:

calls
id | tags
--------
01 | [tag1]
02 | [tag1, tag2]
03 | []

tags
id | tag_name
-------------
01 | tag1
02 | tag2

我想要一个结果 DF,如:

matching table
id | calls_id | tag_id
----------------------
01 | 01       | 01
02 | 02       | 01
02 | 02       | 02
03 |          |

所以基本上我试图在单独的 DF 中将每个调用与其各自的标签匹配

到目前为止,我最好的方法是:

def match_tags(x):
insert_df = pd.DataFrame(columns=['call_id', 'tag_id'])
for y in x['tags']:
    insert_df = insert_df.append({'call_id':x.id, 'tag_id': tags_df['id'].loc[y]}, ignore_index=True)
insert_df.head()
return insert_df

calls_df.apply(lambda x: pd.concat([tag_matching_df, match_tags(x)]), axis=1)

我不确定这里的 lambda 函数是否是正确的解决方案。

忘记了

您可以结合使用爆炸和合并。Explode 为嵌入列表中的每个项目创建一行。

import pandas as pd
calls = pd.DataFrame([
[1 , ["tag1"]],
[2 , ["tag1", "tag2"]],
[3 , []]
], columns=["callid","tag"])

tags = pd.DataFrame([
[1 , "tag1"],
[2 , "tag2"]
], columns=["tagid","tag"])

pd.merge(calls.explode("tag"),tags, on="tag").drop(columns=["tag"])

给予

    callid  tagid
0   1       1
1   2       1
2   2       2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据输入变量在 r 中创建多个具有单独名称的数据框

将向量与R中具有多个条目的数据框进行匹配

在Pandas数据框中具有多个索引的数据透视

如何从具有匹配索引的数据框中减去序列

匹配多个数据框之间的子字符串和单独列中的加权总和

将具有多个值的pandas数据框列字符串拆分为单独的行

删除熊猫数据框中具有多个关联的条目?

在python数据框中创建具有多个名称的列

在具有多个条件的数据框中列出理解

数据框中具有多个列名的 grep()

创建具有多个数据框的熊猫数据框

过滤具有多个条件的数据框

创建具有多个记录的数据框

重塑具有多个ID的数据框

具有多个因素的预测数据框

用单独数据框中的匹配值替换列名

根据具有R中匹配列的模板更改数据框列的数据类型

合并多个具有匹配列和不同列的数据框并放置 NA

从具有不同行数的单独数据框中创建箱线图

如何从多个数据框列中创建单独的列表?

具有公式的旧数据框中的新数据框

如何在 R 中匹配具有多个 ID 的多个数据帧

在Pyspark中的多个列上过滤具有多个条件的Spark数据框

将具有多个键的Python字典映射到具有多个与键匹配的列的数据帧中

在R中具有不同列长度的多个数据框中更改列中的值

将标签打印合并到具有生成打印的 id 的数据框中

在 R 中的数据帧中匹配多个具有设定值的字符串

如何计算数据框中具有彼此匹配的单元格的行数

合并两个不同列中具有匹配值的数据框-Pandas