内部while循环增加循环

时间:2018-10-12 00:38:21

标签: python pandas numpy

我想在内部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)

1 个答案:

答案 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)处理。