экспорт данных в несколько файлов Excel на основе дат Python панды - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь экспортировать свои наборы данных в несколько файлов Excel на основе дат.

Вот мой стол

datestart
+----------+
2019-03-14
2019-03-14
2019-03-12
2019-03-11
2019-03-08
2019-03-07
2019-03-06
2019-03-05
2019-03-04
2019-03-01

для каждой даты я хочу создать новый файл.

datestart   | filename
+-----------+-------------+
2019-03-14  | file_031419
2019-03-14  | file_031419
2019-03-12  | file_031219
2019-03-12  | file_031219
2019-03-08  | file_030819
2019-03-08  | file_030819
2019-03-06  | file_030619
2019-03-06  | file_030619
2019-03-06  | file_030619
2019-03-01  | file_030119

Даты хранятся в формате datetime. Я не хочу жестко кодировать даты. Я хочу, чтобы скрипт искал столбцы с одинаковой датой, группировал их и экспортировал в файл с датой в имени файла.

Скрипт должен экспортировать в 5 файлов. Каждый из файлов будет включать только данные с определенной датой.

Например, file_031419 будет иметь данные только с 031419 в качестве даты, file_031219 будет иметь только данные 031219 и т. Д.

file_031419 file_031219 file_030819 file_030619 file_030119

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Вы можете получить список уникальных дат, используя list(set()), используйте Pandas и df.loc[] для подмножества данных, основанных на дате, используйте pd.to_datetime(), чтобы преобразовать дату в желаемый формат для имени файла, а затемиспользуйте df.to_excel() для сохранения ваших наборов данных в виде файлов Excel:

import pandas as pd

df = pd.Series('''2019-03-14
2019-03-14
2019-03-12
2019-03-12
2019-03-08
2019-03-08
2019-03-06
2019-03-06
2019-03-06
2019-03-01'''.split('\n'), name='datestart', dtype=str).to_frame()

df['data'] = np.random.rand(len(df))

# Get unique dates
dates = list(set(df.datestart.values))

for date in dates:
    idx = df.datestart == date # Filter by unique date
    filename = 'file_'+list(set(pd.to_datetime(df.loc[idx, 'datestart']).dt.strftime('%m%d%y')))[0]+'.xlsx'
    df.loc[idx, 'data'].to_excel(filename) # Save subset of data frame as excel file
0 голосов
/ 19 марта 2019

Вы можете использовать некоторые строковые методы и форматирование строки.

dates = [‘2019-03-01’, ‘2019-05-06’]
for date in dates:
    split_date = date.split(‘-‘)
    fname = ‘file_{}{}{}’.format(split_date[0],split_date[2],split_date[1]
    # save to .csv with fname
...