Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python循环:TypeError:字符串索引必须是整数_Python_Pandas_Dataframe_Nlp - Fatal编程技术网

Python循环:TypeError:字符串索引必须是整数

Python循环:TypeError:字符串索引必须是整数,python,pandas,dataframe,nlp,Python,Pandas,Dataframe,Nlp,对于当前的一个研究项目,我计划在基于Python/Pandas的预定义时间范围内读取JSON对象“Main_Text”。但是,当运行单词计数循环时,代码会产生错误TypeError:line=row['Text Main']的字符串索引必须是整数 Text Main仅包含字符串/文本,不包含整数。我一直在通过故障排除线程,但还没有找到解决这个问题的办法。是否有任何有用的调整,使这项工作 JSON文件具有以下结构: [ {"No":"121","Stock Symbol":"A","Date":"

对于当前的一个研究项目,我计划在基于Python/Pandas的预定义时间范围内读取JSON对象“Main_Text”。但是,当运行单词计数循环时,代码会产生错误
TypeError:line=row['Text Main']
的字符串索引必须是整数

Text Main
仅包含字符串/文本,不包含整数。我一直在通过故障排除线程,但还没有找到解决这个问题的办法。是否有任何有用的调整,使这项工作

JSON文件具有以下结构:

[
{"No":"121","Stock Symbol":"A","Date":"05/11/2017","Text Main":"Sample text"}
]
相关代码摘录如下所示:

import string
import json
import csv

import pandas as pd
import datetime

import numpy as np


# Loading and reading dataset
file = open("Glassdoor_A.json", "r")
data = json.load(file)
df = pd.json_normalize(data)
df['Date'] = pd.to_datetime(df['Date'])


# Create an empty dictionary
d = dict()


# Filtering by date
start_date = "01/01/2009"
end_date = "01/01/2015"

after_start_date = df["Date"] >= start_date
before_end_date = df["Date"] <= end_date

between_two_dates = after_start_date & before_end_date
filtered_dates = df.loc[between_two_dates]

print(filtered_dates)


# Processing
for row in filtered_dates:
    line = row['Text Main']
导入字符串
导入json
导入csv
作为pd进口熊猫
导入日期时间
将numpy作为np导入
#加载和读取数据集
file=open(“Glassdoor_A.json”、“r”)
data=json.load(文件)
df=pd.json\u规范化(数据)
df['Date']=pd.to_datetime(df['Date'])
#创建一个空字典
d=dict()
#按日期筛选
开始日期=“01/01/2009”
结束日期=“2015年1月1日”
在开始日期之后=df[“日期”]>=开始日期

在_end_date=df[“date”]
之前,筛选的_dates
将返回字符串列名的迭代器。如果要在行上迭代,应使用ItErrors()

类似的方法应该会奏效:

import string
import json
import csv

import pandas as pd
import datetime

import numpy as np


# Loading and reading dataset
file = open("Glassdoor_A.json", "r")
data = json.load(file)
df = pd.json_normalize(data)
df['Date'] = pd.to_datetime(df['Date'])


# Create an empty dictionary
d = dict()


# Filtering by date
start_date = "01/01/2009"
end_date = "01/01/2015"

after_start_date = df["Date"] >= start_date
before_end_date = df["Date"] <= end_date

between_two_dates = after_start_date & before_end_date
filtered_dates = df.loc[between_two_dates]

# Processing
for index, row in filtered_dates.iterrows():
    line = row['Text Main']
导入字符串
导入json
导入csv
作为pd进口熊猫
导入日期时间
将numpy作为np导入
#加载和读取数据集
file=open(“Glassdoor_A.json”、“r”)
data=json.load(文件)
df=pd.json\u规范化(数据)
df['Date']=pd.to_datetime(df['Date'])
#创建一个空字典
d=dict()
#按日期筛选
开始日期=“01/01/2009”
结束日期=“2015年1月1日”
在开始日期之后=df[“日期”]>=开始日期

在_end_date=df[“date”]
之前,筛选的_dates
将返回字符串列名的迭代器。如果要在行上迭代,应使用ItErrors()

类似的方法应该会奏效:

import string
import json
import csv

import pandas as pd
import datetime

import numpy as np


# Loading and reading dataset
file = open("Glassdoor_A.json", "r")
data = json.load(file)
df = pd.json_normalize(data)
df['Date'] = pd.to_datetime(df['Date'])


# Create an empty dictionary
d = dict()


# Filtering by date
start_date = "01/01/2009"
end_date = "01/01/2015"

after_start_date = df["Date"] >= start_date
before_end_date = df["Date"] <= end_date

between_two_dates = after_start_date & before_end_date
filtered_dates = df.loc[between_two_dates]

# Processing
for index, row in filtered_dates.iterrows():
    line = row['Text Main']
导入字符串
导入json
导入csv
作为pd进口熊猫
导入日期时间
将numpy作为np导入
#加载和读取数据集
file=open(“Glassdoor_A.json”、“r”)
data=json.load(文件)
df=pd.json\u规范化(数据)
df['Date']=pd.to_datetime(df['Date'])
#创建一个空字典
d=dict()
#按日期筛选
开始日期=“01/01/2009”
结束日期=“2015年1月1日”
在开始日期之后=df[“日期”]>=开始日期

在\u end\u date=df[“date”]之前,
print(filtered\u dates)
的输出是什么?因为它看起来像
是一个字符串。您可以按filtered\u dates.iterrows()在filtered\u dates上迭代。现在,行是一个元组,您可以按位置访问元素,如行[0]或行[1]。它生成时间范围内行的JSON文件摘要。希望这有助于澄清您的观点。谢谢,您的意思是用迭代代替过滤日期中的行:
,在这种情况下?@M.S.是的。这是一个选项,
print(filtered_dates)
的输出是什么,因为它看起来像是一个字符串,您可以通过filtered_dates.iterrows()在filtered_dates上迭代。现在,行是一个元组,您可以按位置访问元素,如行[0]或行[1]。它生成时间范围内行的JSON文件摘要。希望这有助于澄清您的观点。谢谢,您的意思是用迭代代替过滤日期中的行:
,在这种情况下?@M.S.是的。这是一种选择