【问题标题】:Split dataframe into 3 equally sized new dataframes - Pandas [duplicate]将数据框拆分为 3 个大小相同的新数据框 - Pandas [重复]
【发布时间】:2021-08-04 18:54:03
【问题描述】:

我有一个包含 100,227 条记录的数据框。

我想将此数据框导出到 3 个大小相同的 csv 中

我执行了以下操作,但出现错误。是否有更简单的方法来做到这一点?

df_seen = pd.read_csv("data.csv")

df1 = df_seen.shape.iloc[:, :33409]
df2 = df_seen.shape.iloc[33410:, 66818:]
df3 = df_seen.shape.iloc[66819:, 100227]

df1.to_csv('data1.csv', index=False)
df2.to_csv('data2.csv',index = False)
df3.to_csv('data3.csv',index = False)

因此,例如,数据看起来类似于下面的数据,我将 1 列 15 个数字分成 3 列,每列 5 个:

Numbers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

期望的输出(注意每一列代表一个新的 csv,只有一列)

1  6  11
2  7  12
3  8  13 
4  9  14
5  10 15

【问题讨论】:

  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制并粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。 “出现错误”不是问题规范。
  • 您发布的代码没有运行。请include a minimal data frame 作为您的 MRE 的一部分。

标签: python pandas


【解决方案1】:

尝试使用numpy.array_split

import numpy as np
df1, df2, df3 = np.array_split(df_seen, 3)

要将每个 DataFrame 保存到单独的文件中,您可以这样做:

for i, df in enumerate(np.array_split(df_seen, 3)):
    df.to_csv(f"data{i+1}.csv", index=False)

【讨论】:

  • 谢谢!那是我不记得的功能。感谢您的支持
猜你喜欢
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 2016-06-24
  • 1970-01-01
  • 2020-07-14
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多