Python — сохранить вывод цикла

#python #loops #save

#python #циклы #Сохранить

Вопрос:

Мне понадобилась бы помощь в сохранении значений, которые повторяет мой цикл for.

С помощью этого скрипта я создаю свой csv так, как мне это нужно, но нет информации о том, какое значение w и c имеет в каждой строке. Как я могу добавить эту информацию еще в два столбца?

 import pandas as pd

df = pd.read_csv(...)

country_list = df.Country.unique()
wave_list = df.Wave.unique()

dn = pd.DataFrame()

for w in wave_list:
    print ("Wave is: "   str(w))
    wave_select =df[df["Wave"] == w] # Select Rows for Waves
    for c in country_list:
        print ("Country is: "   str(c))
        country_select = df[df["Country"] == c] # Select Rows for Countries
        out = country_select["Sea"].value_counts(normalize=True)*100 # Calculate Percentage
        print (out)
        dn = dn.append(out)
dn.to_csv (...)

 

Я был бы очень благодарен за помощь.

Комментарии:

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

Ответ №1:

Перед циклом: dn = pd.DataFrame(columns=['wave','country','out'])

Внутри внутреннего цикла вместо dn = dn.append(out) :

 dn = dn.append({'wave':w,'country':c,'out':out}, ignore_index=True)
 

Комментарии:

1. Должен быть ожидаемый ответ

2. Спасибо, это именно то, что я искал! 🙂

3. Когда я смотрю на сохраненный csv, я все еще вижу, что что-то не так. Сохраняется только последний набор вычислений. У меня одинаковые результаты для всех волн.

4. Внутренний цикл выполняет точно такие же вычисления для каждой волны. Возможно, вам следует использовать wave_select во внутреннем цикле.