Python pandas: chunksize 是如何工作的?
Python pandas: how does chunksize works?
我有以下代码:
from numpy import dtype
import pandas as pd
import os
import sys
inputFile='data.json'
chunks = pd.read_json(inputFile, lines=True, chunksize = 1000)
original_stdout = sys.stdout
i = 1
for c in chunks:
location = c.location.str.split(',')
for b in range(1000):
print(location[b])
if not type(location[b]) == float:
# get the country name
country = location[b][-1]
else:
country = 'unknown'
我正在从包含 json 个对象的大文件中提取位置字段。因为文件太大,我把它分成了 1000 行的块。我循环遍历每个块并检索我需要的信息:
for c in chunks:
location = c.a.str.split(',')
for b in range(1000):
print(location[b])
在第一次迭代期间一切顺利。在第二次迭代时,行:
print(location[b])
报错:
ValueError: 0 is not in range
我如何循环处理第一个之后的大块?
感谢您的帮助
问题是,通过执行 location[b]
,您正在通过索引 访问 location
框架 (即,您在这里要求具有索引值 b
)。块将正确地遵循索引,这意味着第一个块的索引将从 0
开始,第二个块将以 1000
开始,依此类推。这意味着,索引 0
将仅包含在第一个块中。
因此,您需要迭代没有索引的行:
for row in location:
# Do something.
事实上,如果您查看错误的完整跟踪,您可能还会在 ValueError
.
下方看到一个 KeyError
要迭代系列并获得索引,您可以使用 Series.iteritems()
:
for idx, row in a.iteritems():
# Do something...
我有以下代码:
from numpy import dtype
import pandas as pd
import os
import sys
inputFile='data.json'
chunks = pd.read_json(inputFile, lines=True, chunksize = 1000)
original_stdout = sys.stdout
i = 1
for c in chunks:
location = c.location.str.split(',')
for b in range(1000):
print(location[b])
if not type(location[b]) == float:
# get the country name
country = location[b][-1]
else:
country = 'unknown'
我正在从包含 json 个对象的大文件中提取位置字段。因为文件太大,我把它分成了 1000 行的块。我循环遍历每个块并检索我需要的信息:
for c in chunks:
location = c.a.str.split(',')
for b in range(1000):
print(location[b])
在第一次迭代期间一切顺利。在第二次迭代时,行:
print(location[b])
报错:
ValueError: 0 is not in range
我如何循环处理第一个之后的大块?
感谢您的帮助
问题是,通过执行 location[b]
,您正在通过索引 访问 location
框架 (即,您在这里要求具有索引值 b
)。块将正确地遵循索引,这意味着第一个块的索引将从 0
开始,第二个块将以 1000
开始,依此类推。这意味着,索引 0
将仅包含在第一个块中。
因此,您需要迭代没有索引的行:
for row in location:
# Do something.
事实上,如果您查看错误的完整跟踪,您可能还会在 ValueError
.
KeyError
要迭代系列并获得索引,您可以使用 Series.iteritems()
:
for idx, row in a.iteritems():
# Do something...