如何创建一个只有两列的数据集,从具有ID和值列表的字典开始。

问题描述 投票:2回答:1

我试图弄清楚如何创建一个数据集,其中第一列包含字典中的'ID'和字典列表中值的第二列,以便我可以用seaborn绘制它。

di = {'a' : [1,4,5], 'b' : [1,8],'c' : [56,100,5,568],'d' : [20,10,2],'e' : [1000,3,675]}

我想要这样的东西:

ID       Value
a        1
a        4
a        5
b        1
b        8
c        56
c        100

现在我只有这段代码可以分隔我的ID和我的值,但仍然保留我的值作为列表,而不是上面给出的搜索结果的例子。

serie = pd.Series(di)
df = pd.DataFrame({'ID':serie.index, 'Value':serie.values})

非常感谢帮助。提前致谢!

python-3.x jupyter
1个回答
0
投票

您可以将字典结构化为类似记录的列表(基本上是列表列表)以传递给pd.DataFrame.from_records函数:

lol = [list(zip([x]*len(y), y)) for x, y in di.items()]
df = pd.DataFrame.from_records([x for y in lol for x in y], columns=['ID', 'Value'])
sns.swarmplot(x="ID", y="Value", data=df)

或者,您可以使用pd.Series并使用以下内容解开行内的列表:

df = pd.Series(di).apply(pd.Series).stack()
df = df.reset_index(level=0).‌​rename(columns=lambd‌​a x: 'ID' if x else 'Value')
sns.swarmplot(x="ID", y="Value", data=df)

要么应该得到你需要的东西。

© www.soinside.com 2019 - 2024. All rights reserved.