加入两个 Pandas 数据框时出现问题

Problems joining two Pandas Dataframes

我正在尝试通过 Rest API 创建我在 Trello 中拥有的卡片的报告,我需要在同一份报告中显示卡片数据和分配给每张卡片的成员姓名.

问题是Trello JSON 很繁琐,需要多次查询,然后合并不同的数据框。

我目前卡住了,正在尝试将卡片成员姓名添加到主卡片数据框中。

我正在向您发送问题摘要:

我已经创建了主数据框(trello_dataframe),其中我有来自 Trello 的卡片级别信息,包括“ID 成员”列(trello_dataframe['ID Members'],以列表形式,这是我需要的与另一个数据框合并。

关于 trello_dataframe 的更多信息:https://prnt.sc/boC6OL50Glwu

第二个数据框 (df_response_members) 来自董事会成员级别的查询,其中我有 3 列(ID 成员 (df_response_members['ID Members'])、全名 (df_response_members['Member (Full Name)']) , 和用户名 (df_response_members['Member (Username)']).

关于“df_response_members”的更多信息:https://prnt.sc/x6tmzI04rohs

现在我想合并这两个数据框,按df_response_members['ID Members']分组,这样卡片数据框中就会出现卡片成员的全名和用户名(这是主要的)。

当我尝试使用以下代码合并两个数据框时出现问题,我收到错误

TypeError: unhashable type: 'list'.

trello_dataframe = pd.merge(df_response_members,trello_dataframe, on="ID Members", how='outer')

这是我希望查看主数据框的方式:https://prnt.sc/7PSTmG2zahZO

提前致谢!

您不能这样做有两个原因:A) 正如错误所说,列表不可哈希,并且 DataFrame 操作通常不适用于不可哈希的数据类型,并且,B) 您正在尝试合并list 列和 string 列。两种列类型应该相同才能执行合并。

一个解决方案可能是首先在你的第一个 DataFrame trello_dataframe 上使用 'ID Members' 列使用 DataFrame.explode() (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.explode.html),这将为每个数据框生成一个独立的行'ID Member' 在每个列表上。现在您可以执行与此 DataFrame 的合并。

要转换回您想要的格式,您可以使用 GroupBy,如下所述: