从不同长度的元组列表的字典中创建 Pandas DataFrame

Posted

技术标签:

【中文标题】从不同长度的元组列表的字典中创建 Pandas DataFrame【英文标题】:Creating a Pandas DataFrame from a Dictionary of different-length list of Tuples 【发布时间】:2021-03-01 03:57:39 【问题描述】:

我有一个格式字典: 键 = 人名 Items = list(Tuple(GUID, INT(value)), ...)

'Person A':[('abc123',1),('bcc222',2),('igh643',1)],'Person B': [('abc123',4)],'Person C': [('abc123',2),('icy558',7)]

我想将其转换为索引格式的熊猫数据框:GUID,列:人名,值:INT(值)。这应该类似于:

我试过了:

pd.DataFrame(dict([(k,pd.Series(v)) for k,v in d.items()]))

但它会导致:

【问题讨论】:

【参考方案1】:

你在正确的轨道上。只需进一步展平元组值,以便可以轻松地旋转结果表。

代码

dic 是给定的字典数据。

df = pd.DataFrame(
    [[k, v[0], v[1]] for k, ls_v in dic.items() for v in ls_v],
    columns=["Person", "GUID", "value"]
).pivot(index="GUID", columns="Person")

# drop hierarchical level of "value"
df.columns = df.columns.droplevel(0)

结果

print(df)

Person Person A Person B Person C
GUID                             
abc123      1.0      4.0      2.0
bcc222      2.0      NaN      NaN
icy558      NaN      NaN      7.0
igh643      1.0      NaN      NaN

【讨论】:

像魅力一样工作。谢谢

以上是关于从不同长度的元组列表的字典中创建 Pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

从元组的元组中创建一个列表

Pandas - 从包含列表的字典中创建只有一行的数据框

如何从具有不同长度列表的字典中创建字典列表

从字典列表中创建NumPy记录数组的最简单方法?

我需要从包含列表的字典中使用 MultiIndex 在 Pandas 中创建一个 DataFrame

颤振/飞镖中的元组列表