Python 将json文件解析为数据帧
我需要将一些json文件解析为一个数据帧。我希望有一列包含文本中的单词,另一列包含相应的实体–当“值”对应于单词时,实体将是下面文本的“类型”,否则我希望分配标签“O” 下面是一个例子。 这是JSON文件:Python 将json文件解析为数据帧,python,json,pandas,parsing,Python,Json,Pandas,Parsing,我需要将一些json文件解析为一个数据帧。我希望有一列包含文本中的单词,另一列包含相应的实体–当“值”对应于单词时,实体将是下面文本的“类型”,否则我希望分配标签“O” 下面是一个例子。 这是JSON文件: {"Text": "I currently use a Netgear Nighthawk AC1900. I find it reliable.", "Entities": [ { "Type": "ORGANIZATI
{"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(),因为有时值由两个单词组成。希望这是清楚的。谢谢大家! 这是一个难题,取决于本例中没有的数据以及所需的输出。实体值中是否有重复数据?秩序重要吗?你想在输出中重复吗 可以使用以下几种工具:
- 在搜索字符串之前,请先删除实体值。如果您有相同名称的重叠版本,如“Netgear”和“Netgear INC.”,并且您想要最长的版本,那么这是很好的李>
- 这个人对名词很挑剔。本教程更好地解释了如何处理这些问题
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
很高兴听到这个消息。如果可以,请对我的解决方案投赞成票。