2016-10-11 33 views
1

我试图将包含在数组中的几个字典转换为熊猫数据框。该类型的字典保存为这样:将嵌套数组转换为python中的熊猫数据框

[[{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.309886', 
u'longitude': u'0.496902'},u'month': u'2015-01'},{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.306209', 
u'longitude': u'0.490475'},u'month': u'2015-02'}]] 

我想我的数据格式化为以下格式:

 Category  Latitude Longitude 
0 anti-social 524498.597 175181.644 
1 anti-social 524498.597 175181.644 
2 anti-social 524498.597 175181.644 
. ...   ... 
. ...   ... 
. ...   ... 

我试图将数据强制到数据帧与下面的代码,但它不会产生预期的输出。

for i in crimes: 
    for x in i: 
     print pd.DataFrame([x['category'], x['location']['latitude'], x['location']['longitude']]) 

我对Python很新,所以任何链接/技巧来帮助我构建这个数据框将不胜感激!

回答

1

您处于正确的轨道上,但您正在为每一行创建一个新的数据框,但未给出正确的columns。下面的代码片段应该工作:

import pandas as pd 
import numpy as np 

crimes = [[{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.309886', 
u'longitude': u'0.496902'},u'month': u'2015-01'},{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.306209', 
u'longitude': u'0.490475'},u'month': u'2015-02'}]] 

# format into a flat list 
formatted_crimes = [[x['category'], x['location']['latitude'], x['location']['longitude']] for i in crimes for x in i] 

# now pass the formatted list to DataFrame and label the columns 
df = pd.DataFrame(formatted_crimes, columns=['Category', 'Latitude', 'Longitude']) 

结果是:

   Category Latitude Longitude 
0 anti-social-behaviour 52.309886 0.496902 
1 anti-social-behaviour 52.306209 0.490475 
相关问题