2017-05-18 74 views
1

以下数据是一个更大的dataframe的一部分,其中包含大量嵌套关键字。 说我想访问“湿度”或“windSpeed”我该怎么做?DataFrame访问字典中列表中的嵌套关​​键字

df = pd.DataFrame({"data":[{"time":1422802800,"humidity":0.62,"windSpeed":2.62}]}) 

目的是只选择某些密钥,并将它们添加到CSV文件,而不是追加整个dataframe CSV文件。

+0

你想只写一些列或只是一列吗?你可以使用我的答案添加所需的列,然后只写感兴趣的列csv – EdChum

+0

@EdChum,我改变了上面的代码。 – David

+0

你应该使用'read_json'来读取它,并且你已经相当大地修改了你的问题,我会发布另外一个问题,因为在你接受我的答案之后,增加你的需求并不是一个好习惯。基本上在加载这个json之后,你应该能够使用我的代码来添加数据作为一个新的列,然后你只需选择感兴趣的列并写出它们,例如'df ['hourly']。to_csv()'你可以使用我发布的答案获得小时数据 – EdChum

回答

2

你需要使用applylambda和索引到字典:

In[69]: 
df['data'].apply(lambda x: x['time']) 

Out[69]: 
0 1422802800 
Name: data, dtype: int64 

和像明智湿度:

In[71]: 
df['data'].apply(lambda x: x['humidity']) 

Out[71]: 
0 0.62 
Name: data, dtype: float64 

我建议对存储非标值在一个DF,它是非高性能的,因为你失去了使用数据帧的矢量优势

+0

感谢您的回答。我仍然有点迷路如何改变我的代码。我已经添加了上面的代码行。你能指导我朝着正确的方向吗? – David