2017-12-21 17 views
2

私は最初の列が辞書からの 'ID'と辞書のリストからの値の2番目の列で構成されているので、これを海底でプロットすることができるデータセットを作成する方法を見つけようとしています。IDと値のリストを持つ辞書から始まる2列のみのデータセットを作成する方法。

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

私はこのように、このような気にいらたい:今、私は私のIDと自分の価値を区切るが、それでもとしての私の値を保持し、コードのこの部分を持っているため

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

など.. を私が検索した上記の結果の例ではなく、リストです。

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

ヘルプは大歓迎です。 ありがとうございます!

あなたが pd.DataFrame.from_records関数に渡すために、レコードのようなリスト(リストの基本的リスト)に辞書を構築することができますいずれか
+0

ありがとうございます!これは実際にデータフレームに関する私の問題を解決しますが、海軍でそれをプロットすることはできません sns.swarmplot(x = "ID"、y = "値"、データ=笑) これだけで私にエラーが発生します。 私を助けてくれてありがとう! –

+0

これは実際にそれを完全に解決しました!ありがとう、たくさんの男!私はあなたにupvoteを与えるだろうが、私は十分な評判を持っていない、私はあなたにupvoteを与えるためにこの質問に戻ってくるだろう! もう一度お世話になりました! –

+0

提供された回答をお待ちください。 – Abdou

答えて

0

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) 

いずれか必要なものを取得します。

関連する問題