gpt4 book ai didi

python - 合并两个具有列表的数据集,并在使用 pandas 合并后保留列表

转载 作者:行者123 更新时间:2023-12-02 16:36:27 27 4
gpt4 key购买 nike

我有两个很难合并的数据框:

    df1 = pd.DataFrame({'id': [ ["001",  "001"], ["001"], ["007",   "001"]]})

输出:

    id
0 [001, 001]
1 [001]
2 [007, 001]

df2 = pd.DataFrame({'id': [ "001", "007"],'name': ['Name01', 'Name02']})

输出:

id  name
0 001 Name01
1 007 Name02

我想说的是:

df3 = pd.DataFrame({'id':  [ ["001",  "001"], ["001"], ["007",   "01"]],
'name': [ ['Name01','Name01'], ['Name01'], ['Name02', 'Name01']]})

输出:

    id  name
0 [001, 001] [Name01, Name01]
1 [001] [Name01]
2 [007, 01] [Name02, Name01]

我的问题是我可以合并,但我无法输入我想要的格式。我现在拥有的是:

pd.DataFrame(df2.merge(df1.explode('id'), on= 'id')).groupby('id').agg(lambda x: x.tolist())

输出:

id   name
001 [Name01, Name01, Name01, Name01]
007 [Name02]

最佳答案

在列表理解中使用 df2 创建的字典的 mapping,应该更快,比如 explode 和聚合 list,真实数据中最好的测试:

d = df2.set_index('id')['name'].to_dict()
df1['name'] = [[d[y] for y in x if y in d] for x in df1['id']]
print (df1)
id name
0 [001, 001] [Name01, Name01]
1 [001] [Name01]
2 [007, 001] [Name02, Name01]

关于python - 合并两个具有列表的数据集,并在使用 pandas 合并后保留列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62658212/

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