【发布时间】:2021-05-23 07:18:21
【问题描述】:
大家,我对使用 python 进行数据分析还很陌生,所以对愚蠢的问题表示歉意:
IDE:PyCharm
我有什么: 一个巨大的 .xyz 文件(有 4 列),它是几个数据集的组合,每个数据集可以由文件的第三列确定,从 10,000 到 - 10,000 个,中间为 0,间隔和重复为 100(因此每 201 行是一个数据集)
我想要做的:将海量文件拆分为单独的数据集(每个数据集 201 行),并以不同的名称保存每个文件。
到目前为止我做了什么:
# Import packages
import os
import pandas as pd
import numpy as np #For next steps
import math #For next steps
#Check and Change directory
path = 'C:/Clayton/lines/profiles_aufmod'
os.chdir(path)
print(os.getcwd()) #Correct path is printed
# split the xyz file into different files for each profile
main_xyz = 'bathy_SPO_1984_50x50_profile.xyz'
number_lines = sum(1 for row in (open(main_xyz)))
print(number_lines) # 10854 is the output
rowsize = 201
for i in range(number_lines, rowsize):
profile_raw_df = pd.read_csv(main_xyz, delimiter=',', header=None, nrows=rowsize,
skiprows=i)
out_xyz = 'Profile' + str(i) + '.xyz'
profile_raw_df.to_csv(out_xyz, index=False,
header=False, mode='a')
我面临的问题:
- for 循环最初提供输出文件,如图所示,检查 Proof of output 但现在它不会产生任何输出,也不会重写以前的文件。另一个谜团是我也没有收到错误,请查看Code executed without error。
我试图解决的问题:
- 我更新了所有的包并重启了 Pycharm
- 我逐行运行每一行代码,一切正常,直到 for 循环
【问题讨论】:
-
如果你的文件超过200行,范围显然是空的。
-
您好 Jörg,感谢您抽出宝贵时间,我的文件确实有 200 多行(准确地说是 10854),但正如我之前提到的,上面的代码确实运行并给了我之前的输出文件,它只是不再工作了。再次抱歉这里有任何愚蠢的疏忽。
-
从 10854 到 201 的范围是空的,因此循环永远不会执行,因为没有什么可以迭代。
-
我明白了,有没有更好的方法来为上述目的编写 for 循环?再次感谢您的宝贵时间
-
我首先不明白在从行数到行大小的范围内进行迭代的目的是什么。这对我来说毫无意义。
标签: python-3.x pandas dataframe for-loop split