csv 读取数据超过1m的Excel文件,并使用Python拆分为多个文件

gwbalxhn  于 2023-04-03  发布在  Python
关注(0)|答案(2)|浏览(141)

我试图读取Excel/csv文件与数据超过1米,并将其拆分

例如:

我有2.7M数据的Excel文件,现在我想使用Python将其拆分为3个0.9M数据的文件。

代码:

import pandas as pd

df = pd.read_excel("/path/to/excels/file.xlsx")

n_partitions = 3

for i in range(n_partitions):
    sub_df = df.iloc[(i*n_paritions):((i+1)*n_paritions)]
    sub_df.to_excel(f"/output/path/to/test-{i}.xlsx", sheet_name="a")

我试过这个,它的工作很好,为较少的数据,但希望的东西,可以帮助当我们有数据超过1米,因为我们都知道Excel有限制高达1米显示数据。

cidc1ykv

cidc1ykv1#

众所周知,Excel显示数据的限制最多为1 m。
记住这个条件,并且在给定动态变化的情况下,您希望随时扩展,而不是每次都对分区数量进行心算,而是根据您的需要定义行/记录限制。这样您就可以控制每个分区中保留的数据量,而不是相反。

limit = 100000

在这里我把它保持在100,000,这样在Excel中的可读性会稍微好一点,然后你就可以继续使用dataframe.iloc功能进行分区,就像你最初做的那样。

n = 1
for i in range(df.shape[0]):
    sub_df = df.iloc[i:limit+i]
    sub_df.to_excel(f"/output/path/to/test-{n}.xlsx", sheet_name="a")
    n += 1
    i += limit

这是一个相当天真的方法,但它的工作和阅读。

qij5mzcb

qij5mzcb2#

更正

一开始误解了这个问题,所以我的选项只反映了按行数划分-有一个很好的问答问题将涵盖这个问题split large dataframe

按给定的行数拆分 Dataframe -您可以调整range()并通过step参数扩展它,该参数将获得n_partitions的值:

for i in range(0,df.shape[0],n_partitions):
    df[i:i+n_partitions].to_excel(f"/output/path/to/test-{i}.xlsx", sheet_name="a")

示例:

import pandas as pd

df = pd.read_excel("/path/to/excels/file.xlsx")

n_partitions = 3
for i in range(0,df.shape[0],n_partitions):
    df[i:i+n_partitions].to_excel(f"/output/path/to/test-{i}.xlsx", sheet_name="a")

相关问题