我想在内部while循环增加之前增加外部for循环。有没有办法做到这一点?我的代码如下。 我希望代码在j递增之前经历所有i。谢谢
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
for i in data_files:
data_i = pd.read_csv(i, sep=" ", header = None)
data_i.columns = ['a', 'b', 'c']
cls = []
j=0
while j<=len(i):
Z = [data_i['c'][j]]
#j=j+1
cls.append(Z)
答案 0 :(得分:0)
无法在内循环之前增加外循环-首先增加外循环只会移动到新版本的内循环(基本上从头开始)。我认为您想切换循环顺序。
这里是一个例子:
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
dfs = []
for file in data_files:
df = pd.read_csv(file, sep=" ", header=None)
df.columns = ['a', 'b', 'c']
dfs.append(df)
cls = []
for i in range(len(dfs[0])):
row = []
for df in dfs:
row.append(df['c'][i])
cls.append(row)
第一个循环只是读取所有文件。该第一个循环的逻辑可以被合并到最内层的循环(for df in dfs
)中,如果您的文件很大,则可能要这样做并且不能一次全部存储在内存中。分隔这些循环非常有用,这样您就可以知道需要执行多少行。
这是一个只有两个循环的示例:
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
first_file = pd.read_csv(data_files[0], sep=" ", header=None) #for the loop max val
cls = []
for i in range(len(first_file)):
row = []
for file in data_files:
df = pd.read_csv(file, sep=" ", header=None)
df.columns = ['a', 'b', 'c']
row.append(df['c'][i])
cls.append(row)
您可能还想添加一些错误(IndexError
)处理。