如何使用Python字典来编写此代码?

2024-04-24 08:47:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个表(熊猫数据帧),它们看起来有点像这样:

tables

数据来自2个Airtable API调用。我将它们转换为数据帧。 表1fields.Topics中的ID对应于表2id列。我想将表2中的fields.Name映射到fields.Topics,从而将它们放在表1中

Topics_dict = dict(zip(Table2['id'] ,Table2['fields.Name']))
Table1.explode('fields.Topics')
Table1['Topic'] = Table1['fields.Topics'].map(Topics_dict)

我在绘制它们时遇到困难。这会产生以下错误:

TypeError: unhashable type: 'list'


Tags: 数据nameapiidmapfieldstopiczip
1条回答
网友
1楼 · 发布于 2024-04-24 08:47:39

您可以分解表1的Topics-列。然后我们设置两个表的索引,然后在表1上连接表2。然后,我们通过分组Publisher重新创建table1格式,如下所示:

table1 = pd.DataFrame({'Publisher':['Jim', 'Jack', 'John'], 'Topics':[['a', 'b'], 'c', ['c','d','e']]})
table2 = pd.DataFrame({'id':['a', 'c', 'e'], 'Name':['Cupcake', 'Pastry', 'Brownie']})

result = (table1.explode('Topics')
      .set_index('Topics')
      .join(table2.set_index('id'))
      .reset_index()
      .groupby('Publisher').agg(list))

print(result)

               index                    Name
Publisher                                   
Jack             [c]                [Pastry]
Jim           [a, b]          [Cupcake, nan]
John       [c, d, e]  [Pastry, nan, Brownie]

相关问题 更多 >