我需要将一些json文件解析为熊猫数据框。我想有一栏中包含文字的单词,另一列包含相应的实体–当“值”对应于该单词时,该实体将是下面文字的“类型”,否则我想分配标签“ O”。
下面是一个示例。 这是JSON文件:
{"Text": "I currently use a Netgear Nighthawk AC1900. I find it reliable.",
"Entities": [
{
"Type": "ORGANIZATION ",
"Value": "Netgear"
},
{
"Type": "DEVICE ",
"Value": "Nighthawk AC1900"
}]
}
这就是我想要得到的:
WORD TAG
I O
currently O
use O
a O
Netgear ORGANIZATION
Nighthawk AC1900 DEVICE
. O
I O
find O
it O
reliable O
. O
有人可以帮助我进行解析吗?我无法使用split(),因为有时值包含两个单词。希望这很清楚。谢谢!
答案 0 :(得分:0)
这是一个难题,将取决于此示例中未包含哪些数据以及所需的输出。实体值中是否有重复数据?订单重要吗?您要在输出中重复吗?
可以使用一些工具:
答案 1 :(得分:0)
我不知道您所需要的是否严格是您作为所需输出发布的内容。 我给您的解决方案是“肮脏的”(更多元素,列TAG放在第一位) 您可以设法将其清洁并放入所需的格式。由于您没有提供开始的代码,因此可以完成它。 最终,您会发现stackoverflow的目的不是让人们为您编写代码,而是让人们为您尝试的代码提供帮助。
import json
import pandas as pd
#open and reading of the json:
with open('netgear.json','r') as jfile:
data = jfile.read()
info = json.loads(data)
#json into content
words,tags = info['Text'].split(),info['Entities']
#list to handle the Entities
prelist = []
for i in tags:
j = list(i.values())
#['ORGANIZATION ', 'Netgear']
#['DEVICE ', 'Nighthawk AC1900']
prelist.append(j)
#DataFrames to be merged
dft = pd.DataFrame(prelist,columns=['TAG','WORD'])
dfw = pd.DataFrame(words,columns=['WORD'])
#combine the dataFrames and NaN into 0
df = dfw.merge(dft, on='WORD', how='outer').fillna(0)
这是输出:
WORD TAG
0 I 0
1 I 0
2 currently 0
3 use 0
4 a 0
5 Netgear ORGANIZATION
6 Nighthawk 0
7 AC1900. 0
8 find 0
9 it 0
10 reliable. 0
11 Nighthawk AC1900 DEVICE