инкремент для цикла с внутренним циклом while - PullRequest
0 голосов
/ 12 октября 2018

Я хотел бы увеличить внешний цикл for перед внутренним циклом while.Есть ли способ сделать это?Мой код ниже.Я хочу, чтобы код прошел все я до увеличения j.Спасибо

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 голосов
/ 12 октября 2018

Нет способа увеличить внешний цикл перед внутренним циклом - сначала увеличивая внешний цикл, можно просто перейти к новой версии внутреннего цикла (в основном, начиная с начала).Я думаю, что вы хотите изменить порядок своих циклов.

Вот пример:

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...