我想使用 Pandas 并行读取一个大的 .xls 文件。目前我正在使用这个:
LARGE_FILE = "LARGEFILE.xlsx"
CHUNKSIZE = 100000 # processing 100,000 rows at a time
def process_frame(df):
# process data frame
return len(df)
if __name__ == '__main__':
reader = pd.read_excel(LARGE_FILE, chunksize=CHUNKSIZE)
pool = mp.Pool(4) # use 4 processes
funclist = []
for df in reader:
# process each data frame
f = pool.apply_async(process_frame,[df])
funclist.append(f)
result = 0
for f in funclist:
result += f.get(timeout=10) # timeout in 10 seconds
Run Code Online (Sandbox Code Playgroud)
虽然这会运行,但我认为它实际上并没有加快读取文件的过程。有没有更有效的方法来实现这一目标?
我想在循环中创建数据帧,但是使用键命名每个数据帧,而不是覆盖循环中的每个数据帧.
这是我的数据框的简化版本:
ID Field Value
1 A 1.1
2 A 1.2
3 A 2.4
4 B 1.7
5 B 4.3
6 C 2.2
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我想最终得到3个名为A,B和C的数据框,所以这就是我累了:
df2= df.groupby(['Field'])
for key, group in df2:
key = group.reset_index()
Run Code Online (Sandbox Code Playgroud)
但是当然,每个过度循环都会覆盖"密钥"这个名称.如何通过其键为循环中的每个数据框命名?
我还想创建一个创建的数据帧列表,以便跟踪它们.