Как сгруппировать по меткам времени для каждого дня в панде датафрейм и записать его в csv? - PullRequest
1 голос
/ 19 октября 2019

У меня есть .csv-файл с большим количеством данных. Это данные, которые собираются каждые 10 минут, поэтому временная метка (столбец с именем «TIMESTAMP») имеет следующий формат: ДД / ММ / ГГГГ чч: мм. Я хочу создать / написать новый CSV-файл для каждый день данных с использованием панд в Python.

Этот код создает новый CSV-файл каждые 10 минут (так что теперь у меня многофайлов lol):

for name, group in df.groupby('TIMESTAMP'):
    group.to_csv('{}.csv'.format(name), index=False)

Является ли groupby даже хорошим решением для этого? Я думал о том, чтобы сделать что-то вроде цикла и оператора if, но groupby казался хорошим и ленивым решением ...

Действительно благодарен за любую помощь!

1 Ответ

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

Groupby - хорошее решение. Я бы создал столбец, в котором вы округляете дату и время до отдельных дней и группируете по этому столбцу:

df['day']=df['TIMESTAMP'].dt.floor('d')

for name, group in df.groupby('day'):
    group.to_csv('{}.csv'.format(name), index=False)

Редактировать

Если не хотите изменять столбцывашего фрейма данных вам просто нужно удалить новый столбец перед сохранением его в CSV:

for name, group in df.groupby('day'):
    group.drop('day',axis=1).to_csv('{}.csv'.format(name), index=False)
...