Python, Pandas из фрейма данных для создания новых данных - PullRequest
0 голосов
/ 04 июня 2018

Оригинальные таблицы имеют 2 столбца.Я хочу выбрать строки по заданным критериям (по месяцам) и поместить их в новые файлы.

Исходные файлы выглядели так:

enter image description here

Коды, которые я использую: import os import pandas as pd

working_folder = "C:\\My Documents\\"

file_list = ["Jan.xlsx", "Feb.xlsx", "Mar.xlsx"]

with open(working_folder + '201703-1.csv', 'a') as f03:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201703 = df[df.ARRIVAL.between(20170301, 20170331)] 
        df_201703.to_csv(f03, header = True)

with open(working_folder + '201702-1.csv', 'a') as f02:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201702 = df[df.ARRIVAL.between(20170201, 20170231)] 
        df_201702.to_csv(f02, header = True)

with open(working_folder + '201701-1.csv', 'a') as f01:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201701 = df[df.ARRIVAL.between(20170101, 20170131)] 
        df_201701.to_csv(f01, header = True)

Результаты выглядят так:

enter image description here

Улучшения, которые я хочу сделать:

  1. Сохранить их как файлы xlsx вместо .csv
  2. Не иметь первых столбцов индекса
  3. Сохранять только 1 строку (top) заголовки (теперь у каждого csv есть 3 строки заголовков)

Как я могу это сделать?Спасибо.

1 Ответ

0 голосов
/ 04 июня 2018

Я думаю, нужно создать list of DataFrame s, concat вместе, а затем записать в файл:

dfs1 = []

for fl in file_list:
    df = pd.read_excel(working_folder + fl)
    dfs1.append(df[df.ARRIVAL.between(20170101, 20170131)] )

pd.concat(dfs1).to_excel('201701-1.xlsx', index = False)

Что следует упростить при понимании списка:

file_list = ["Jan.xlsx", "Feb.xlsx", "Mar.xlsx"]
dfs1 = [pd.read_excel(working_folder + fl).query('20170101 >= ARRIVAL >=20170131') for fl in file_list]

pd.concat(dfs1).to_excel('201701-1.xlsx', index = False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...