Python 3.x 如何从具有ID和值列表的字典开始创建只有两列的数据集。

Python 3.x 如何从具有ID和值列表的字典开始创建只有两列的数据集。,python-3.x,jupyter,Python 3.x,Jupyter,我试图弄清楚如何创建一个数据集,其中第一列由字典中的“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 5

我试图弄清楚如何创建一个数据集,其中第一列由字典中的“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})
非常感谢您的帮助。
提前谢谢

您可以将字典组织成一个类似记录的列表(基本上是一个列表列表),以传递给
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)

任何一种都能满足您的需要。

谢谢!这确实解决了我的数据帧问题,但仍然不能让我用seaborn绘制它。我使用了命令:sns.swarmlot(x=“ID”,y=“Value”,data=lol)来处理这个问题,但这只会给我一个错误。谢谢你帮助我!这实际上彻底解决了问题!谢谢你,伙计!我会投你一票,但我没有足够的声誉,当我这么做的时候,我会回到这个问题上来给你一票!再次感谢你,伙计!!请随时接受提供的答案。