Объединение pandas фреймов данных из массива / списка - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь объединить (concat) фреймы данных, выбранные из CSV-файлов. Ранее я достигал этого вручную, но хочу использовать (tkinter) filedialog, чтобы пользователь мог выбрать один или несколько файлов для использования в кадре данных. То, что у меня есть:

  1. Считывать имена файлов в массив, пока пользователь не нажмет отмену - все хорошо
while True:
    root = Tk()
    root.withdraw()
    filename = filedialog.askopenfilename(title='Open data file', filetypes=(("Comma separated values", "*.csv"),))
    if filename =="":
        break
    filenames.append(filename)
Используйте имена файлов для генерации кадра данных - все хорошо в отдельности (я думаю, что они печатают ОК)
def read_Yokogawa(filename):
    frame = pd.read_csv(filename, header = 46, skiprows = [47, 48], low_memory = False, parse_dates = True, infer_datetime_format = True, na_values = ['+OVER', '-OVER'])
    print(frame)
    return frame

dfs=[]  #Set an empty array of dataframes
for filename in filenames:
    dfs.append([read_Yokogawa(filename)])   #Append each dataframe to the array
Конкатировать массив данных вместе - не хорошо
df = pd.concat(dfs)

Я получаю ошибку: TypeError: невозможно объединить объект типа ''; допустимы только Series и DataFrame ob js

Все файлы имеют одинаковые столбцы, поскольку они генерируются одним и тем же программным обеспечением. Я также пытался pd.concat([dfs]), но получаю ту же ошибку.

1 Ответ

1 голос
/ 27 февраля 2020

И @Quang, и @Renaud предложили одно и то же, что оказалось хорошим ответом на вопрос.

dfs=[]
for filename in filenames:
    dfs.append(read_Yokogawa(filename))
df = pd.concat(dfs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...