For Loop Return All

时间:2015-08-04 00:14:03

标签: json loops for-loop pandas iterable

我有一个Pandas数据框,每行有json字符串。我想运行for循环到json_normalize每一行并将数据带回另一个数据帧,这样我就可以访问某些key_value对。

我的功能如下:

for line in df:
        json_normalize(line)

这会打印出我想要的数据,但是我想把它放到一个对象中,这样我就可以将它作为数据框读取并对其执行操作。 数据是这样的:

3     [{u'from': {u'name': u'Aaron Roth', u'id': u'1...
5     [{u'from': {u'name': u'Elle Oh', u'id': u'1020...
6     [{u'from': {u'name': u'Chris Magorian', u'id':...
7     [{u'from': {u'name': u'Jimmy George', u'id': u...
8     [{u'from': {u'name': u'A'raelle Flynn-Bolden',...
12    [{u'from': {u'name': u'Aaron Roth', u'id': u'1...
13    [{u'from': {u'name': u'A'raelle Flynn-Bolden',...
16    [{u'from': {u'name': u'Matthew Emery', u'id': ...
17    [{u'from': {u'name': u'Elle Oh', u'id': u'1020...
18    [{u'from': {u'name': u'Gyasi Silas', u'id': u'...
19    [{u'from': {u'name': u'Alice Magorian', u'id':...
23    [{u'from': {u'name': u'Jonathan Jayasinghe', u...
24    [{u'from': {u'name': u'Aaron Roth', u'id': u'1...

1 个答案:

答案 0 :(得分:1)

您可以在json-text列上使用map方法应用lambda函数,该函数将使用json.loads解析json,然后返回所需的字段。

import json

name = df.json_text.map(lambda s: json.loads(s)['from']['name'])
id = df.json_text.map(lambda s: json.loads(s)['from']['id'])

flattened = pd.DataFrame({'name':name, 'id',id})

或者,如果你想引入所有"来自"一次性(如果在此字段中没有进一步的嵌套),您可以简单地调用

flattened = pd.DataFrame(name = df.json_text.map(lambda s: json.loads(s)['from']['name'])