【问题标题】:Slicing Pandas DataFrame every nth row每第 n 行切片 Pandas DataFrame
【发布时间】:2021-04-22 04:54:50
【问题描述】:

我有一个 CSV 文件,我将其作为 pandas DataFrame 读取。我想在每第 n 行之后对数据进行切片并将其存储为单独的 CSV。

我的数据看起来有点像这样:

index,acce_x,acce_y,acce_z,grav_x,grav_y,grav_z
0,-2.53406373,6.92596131,4.499464420000001,-2.8623820449999995,7.850541115,5.129520459999999
1,-2.3442032099999994,6.878311170000001,5.546690349999999,-2.6456542850000004,7.58022081,5.62603916
2,-1.8804458600000005,6.775125179999999,6.566146829999999,-2.336306185,7.321197125,6.088656729999999
3,-1.7059021099999998,6.650866649999999,7.07060242,-2.1012737650000006,7.1111130000000005,6.416324900000001
4,-1.6802886999999995,6.699703990000001,7.15823367,-1.938001715,6.976289879999999,6.613534820000001
5,-1.6156433,6.871610960000001,7.13333286,-1.81060772,6.901037819999999,6.72789553
6,-1.67286072,7.005918899999999,7.22047422,-1.722352455,6.848503825,6.8044359100000005
7,-1.56608278,7.136883599999999,7.150566069999999,-1.647941205,6.821055315,6.850329440000001
8,-1.3831649899999998,7.2735946999999985,6.88074028,-1.578703155,6.821634375,6.866061665000001
9,-1.25986478,7.379898050000001,6.590330490000001,-1.5190086099999998,6.839881785,6.861375744999999
10,-1.1101097050000002,7.48500525,6.287461959999999,-1.4641099750000002,6.870566649999999,6.842625039999999

例如,我想在每 5 行之后对其进行切片,并将索引为 1-4 和 5-9 的行分别存储在单个 CSV 中(因此在这种情况下,我将获得 2 个新的 CSV),第 10 行应该是丢弃。 一个问题是我必须将其应用于长度不同的多个文件以及命名新创建的 CSV。

【问题讨论】:

  • 到目前为止你能发布你的代码吗?提供帮助会容易得多。具体来说,您表示您正在尝试动态地做某事。你怎么知道每个文件的“保存到文件一”、“保存到文件二”、“丢弃”规则?

标签: python pandas dataframe slice


【解决方案1】:

您可以使用for 循环来做到这一点:

for i in range(round(len(df)/5)): #This ensures all rows are captured
   df.loc[i*5:(i+1)*5,:].to_csv('Stored_files_'+str(i)+'.csv')

所以第一次迭代将是第 0 到第 5 行,名称为“Stored_files_0.csv” 第二次迭代第 5 到 10 行,名称为“Stored_files_1.csv” 等等……

【讨论】:

    猜你喜欢
    • 2012-08-06
    • 2021-11-22
    • 1970-01-01
    • 2013-09-01
    • 2017-03-28
    • 2017-08-22
    • 2017-12-11
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多