2017-02-10 7 views
0

私は、それぞれがdictを含む列のデータフレームを持っています。データフレーム内のPandas dictによるルーピング

これらのdictを抽出してデータフレームに変換したいので、それらを一緒にマージすることができます。

これを行うにはどうすればよいですか?

のような何か:あなたの列がdictsが含まれており、それらのdictsのうち、データフレームを作りたい

for row in dataframe.column: 
    dataframe_loop = pd.DataFrame(dataframe['column'].iloc(row), columns=['A','B']) 
    dataframe_result = dataframe_result.append(dataframe_loop) 
+0

ソリューションの問題点は何ですか?ループが動作するための 'iteritems'が不足していると思われます。 – languitar

+0

辞書のキーは何ですか?新しいデータフレームの列との関係はどのようにするべきですか? – ASGM

答えて

0

場合は、あなただけの直接データフレームにdictsのリストに列を変換し、それを行うことができます。

pd.DataFrame(dataframe['column'].tolist()) 

辞書キーは列になります。他の動作が必要な場合は、その動作を指定する必要があります。

0
import pandas as pd 

d = {'col': pd.Series([{'a':1}, {'b':2}, {'c':3}])} 

df = pd.DataFrame(d) 

>>>print(df) 

     col 
0 {'a': 1} 
1 {'b': 2} 
2 {'c': 3} 

res = {} 

for row in df.iterrows(): 
    res.update(row[1]['col']) 

>>>print(res) 
{'b': 2, 'a': 1, 'c': 3} 
0

dataframe.columnのあなたのディクテーションがどのようなものかわかりません。下の辞書のように見える場合は、pandas.concatを使って辞書を集中させることができます。

import pandas as pd 

# create a dummy dataframe 
dataframe = pd.DataFrame({'column':[{'A':[1,2,3], 'B':[4,5,6]}, \ 
            {'A':[7,8,9], 'B':[10,11,12]}, \ 
            {'A':[13,14,15], 'B':[16,17,18]}]}) 

#print(dataframe) 

res = pd.concat([pd.DataFrame(row, columns=['A', 'B']) for row in dataframe.column], ignore_index=True) 

print(res) 
関連する問題