如何使用Python将一个Excel拆分为多个Excel,并在所有新Excel中使用共同的行数分布?

afdcj2ne  于 2022-12-24  发布在  Python
关注(0)|答案(2)|浏览(182)

我有一个包含大量数据的excel。我想将此excel拆分为多个行平均分布的excel。
我目前的代码是工作的一部分,因为它是分配所需的行数和创建多个excel。但在同一时间,它是通过考虑行数不断创建更多的excel。
n_partitions中,如果我输入数字5,那么它将在两个excel中创建5行excel,之后它将继续创建三个空白excel。我希望我的代码在所有行都被分发后停止创建更多excel。
下面是我的示例excel与预期的结果和示例代码。

我当前使用的代码是。

import pandas as pd

df = pd.read_excel("C:/Zen/TestZenAmp.xlsx")

n_partitions = 5

for i in range(n_partitions):
    sub_df = df.iloc[(i*n_partitions):((i+1)*n_partitions)]
    sub_df.to_excel(f"C:/Zen/-{i}.xlsx", sheet_name="a")
inb24sb2

inb24sb21#

另一种可能的解决方案:

import pandas as pd

df = pd.read_excel("x.xlsx")

k = 5

g = df.groupby([df.index // k])
df['id'] = g.ngroup()
(g.apply(lambda x: x.drop('id', 1)
         .to_excel(f"/tmp/x-{pd.unique(x.id)[0]}.xlsx", sheet_name="a")))
pcww981p

pcww981p2#

您可以使用下面的代码将DataFrame拆分为5个大小的块:

n = 5
list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]

您可以像这样访问每个块:

〉〉list_df[0]

〉〉list_df[2]

然后,您可以遍历块/子 Dataframe 列表并创建单独的Excel文件:

i=1
for sub_df in list_df:
    sub_df.to_excel(f"C:/Zen/-{i}.xlsx", sheet_name="a", index=False)
    i+=1

相关问题