从 dict 创建数据框,其中键是元组,值是列表
Posted
技术标签:
【中文标题】从 dict 创建数据框,其中键是元组,值是列表【英文标题】:Creating a dataframe from a dict where keys are tuples and values are lists 【发布时间】:2021-09-26 22:50:47 【问题描述】:假设我们有以下字典,键为元组,值为列表:
dict_temp = ('first', 'line'): [1, 2], ('second', 'line'): [1, 21, 11]
我想创建一个包含 2+n 列的数据框:来自元组的 Col1 和 Col2,以及来自列表中每个元素的 Col3、Col4...,它们应该如下所示:
0 1 2 3 4
0 first line 1 2 NaN
1 second line 1 21 11.0
因此,我还需要用列表拆分列。我所做的是:
dict_temp = ('first', 'line'): [1, 2], ('second', 'line'): [1, 21, 11]
df_left = pd.Series(dict_temp).reset_index()
df_right = pd.DataFrame(df_left[0].tolist())
df_left = df_left.drop([0], axis=1) # Drop column
df = pd.concat([df_left, df_right], axis=1)
#df.columns = [0, 1, 2, 3, 4]
df
输出是:
level_0 level_1 0 1 2
0 first line 1 2 NaN
1 second line 1 21 11.0
虽然我已经处理了受this question 和that question 启发的问题,但我认为应该有更好的pythonic 方式来处理它。
【问题讨论】:
【参考方案1】:尝试将此list
理解与列表解包一起使用,然后只需将其转换为DataFrame
:
lst = [[*k] + v for k, v in dict_temp.items()]
print(pd.DataFrame(lst))
输出:
0 1 2 3 4
0 first line 1 2 NaN
1 second line 1 21 11.0
【讨论】:
或者list(k) + v
或itertools.chain(k, v)
。
是的@timgeb,它们也是其他不错的选择:)
很棒的答案,非常感谢。也标记为答案。以上是关于从 dict 创建数据框,其中键是元组,值是列表的主要内容,如果未能解决你的问题,请参考以下文章