Сохранение данных groupby () в файле csv — Pandas

#python #pandas

#python #pandas

Вопрос:

Мне нужно отфильтровать некоторые данные из моего файла csv и сохранить результаты.

Я делаю это,

 from pandas import read_csv, DataFrame

df = read_csv('results.csv')

df = df.groupby(['LR', 'Optimizer', 'Activation', 'Drop rate', 'Epochs','Batch size']).mean()
df = df.drop(['kFold'],1)
df = df.drop(['Train time (segs)'],1)
df = df.drop(['T Loss','T Acc (%)', 'T Prec (%)', 'T Recall (%)', 'VN', 'FN', 'FP', 'VP'],1)
df = df.sort_values(by=['VP (%)'], ascending=False)

df.head(50)
  

И его внешний вид в Google colaboratory выглядит следующим образом,

введите описание изображения здесь

Но теперь, если я сохраню данные df.to_csv('res.csv', index=None, header=True) , я потеряю все groupby() столбцы. Как я могу это сделать, чтобы получить файл csv в виде изображения (или аналогичный)? Можно объединить эти два «шага» в заголовке только с одним?

Большое вам спасибо!

Ответ №1:

Вам либо нужно установить index=True :

 df.to_csv('res.csv', index=True, header=True)
  

или вы можете сбросить индекс перед сохранением, используя:

 df.reset_index().to_csv('res.csv', index=None, header=True)
  

Ответ №2:

Я думаю, вам нужно удалить index=False , если нужно MultiIndex в файле:

 df = df.groupby(['LR', 'Optimizer', 'Activation','Drop rate', 'Epochs','Batch size']).mean()

df.to_csv('res.csv', header=True)
  

Или преобразовать MultiIndex в столбцы и использовать index=None параметр для опускания по умолчанию RangeIndex :

 df = df.groupby(['LR', 'Optimizer', 'Activation','Drop rate', 'Epochs','Batch size'], as_index=False).mean()
#alternative
#df = df.groupby(['LR', 'Optimizer', 'Activation', 'Drop rate', 'Epochs','Batch size'].mean().reset_index()

df.to_csv('res.csv', index=None, header=True)