2017-10-05 4 views
1

私は、同じデータフレーム内の別の列に辞書を含むある列からget()メソッドをベクトル化しようとしています。たとえば、アドレス欄の辞書の都市にaddress.city列を設定するとします。pythonでベクター化get()メソッド

df = pd.DataFrame({'address': [{'city': 'Lake Ashley', 'state': 'MN', 'street': '56833 Baker Branch', 'zip': '15884'}, 
          {'city': 'Reginaldfurt', 'state': 'MO', 
           'street': '045 Bennett Motorway Suite 404', 'zip': '68916'}, 
          {'city': 'East Stephaniefurt', 'state': 'VI', 'street': '908 Matthew Ports Suite 313', 'zip': '15956-9706'}], 
       'address.city': [None, None, None], 
       'address.street': [None, None, None]}) 

私は

df['address.city'].apply(df.address.get('city')) 

をしようとしていたが、それは動作しません。私はdf.address[0].get('city')がその行の都市値を抽出するので、私は近くにいると思った。あなたが想像することができるように、私はaddress.streetのために同じことをしたい。

答えて

2

あなたが望むものは以下の通りです。しかし、あなたがこの

df.address.apply(pd.Series).add_prefix('address.') 
# or 
# pd.DataFrame(df.address.tolist()).add_prefix('address.') 

     address.city address.state     address.street address.zip 
0   Lake Ashley   MN    56833 Baker Branch  15884 
1  Reginaldfurt   MO 045 Bennett Motorway Suite 404  68916 
2 East Stephaniefurt   VI  908 Matthew Ports Suite 313 15956-9706 

ようaddress列を解析することができますこれは、あなたの質問に答えます。

df['address.city'] = df.address.apply(lambda d: d['city']) 

df 

              address  address.city address.street 
0 {'city': 'Lake Ashley', 'state': 'MN', 'street...   Lake Ashley   None 
1 {'city': 'Reginaldfurt', 'state': 'MO', 'stree...  Reginaldfurt   None 
2 {'city': 'East Stephaniefurt', 'state': 'VI', ... East Stephaniefurt   None 
+0

はい、それは私がのために行くよ何最終的です。ブラボー!そしてありがとう! – xristian

+0

私はそれをupvoteしたいと思いますが、まだ投票を投稿できません – xristian