Как сохранить вывод в .csv после каждого цикла без перезаписи в Pandas? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу сохранить вывод в .csv. Когда я запускаю цикл while и сохраняю вывод, мой вывод сохраняется только для последней итерации. Не сохраняется мое значение всей итерации.

Кроме того, я хочу пропустить строки с нулевым значением при печати моего вывода.

Это мой код:

import pandas as pd `#pandas library
sample = pd.DataFrame(pd.read_csv ("Sample.csv")) #importing .csv as pandas DataFrame

i = 0
while (i <= 23):
    print('Value for', i) `#i vale`
    sample2 = (sample[sample['Hour'] == i])`#Data for every hour`
    sample3 = (sample2[(sample2['GHI']) == (sample2['GHI'].max(0))]) `#Max value from sample3 DataFrame`
    sample3 = sample3.loc[sample3.ne(0).all(axis=1)]`ignoring all rows having zero values`
    print(sample3)  `print sample3`
    sample3.to_csv('Output.csv')`trying to save for output after every iteration`
    i = i + 1

1 Ответ

0 голосов
/ 17 октября 2019

Другой способ сделать то, что вы хотите сделать, это избавиться от вашего цикла, как это:

sample_with_max_ghi = sample.assign(max_ghi=sample.groupby('Hour')['GHI'].transform('max'))
sample_filtered = sample_with_max_ghi[sample_with_max_ghi['GHI'] == sample_with_max_ghi['max_ghi']]
output_sample = sample_filtered.loc[sample_filtered.ne(0).all(axis=1)].drop('max_ghi', axis=1)
output_sample.to_csv('Output.csv')

Некоторые объяснения:

1.

sample_with_max_ghi = sample.assign(max_ghi=sample.groupby('Hour')['GHI'].transform('max'))

Эта строка добавляет новый столбец к вашему фрейму данных, содержащий максимум GHI столбца для вашей группы Hour

2.

sample_filtered = sample_with_max_ghi[sample_with_max_ghi['GHI'] == sample_with_max_ghi['max_ghi']]

Эта строка фильтрует только те строки, гдезначение GHI на самом деле является максимумом его Hour группы

3.

output_sample = sample_filtered.loc[sample_filtered.ne(0).all(axis=1)].drop('max_ghi', axis=1)

и примените последний фильтр, чтобы избавиться от строк с 0 значениями

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