我有一个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...
答案 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'])