Добавление pandas .dataframe к другому с его собственным именем - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть данные, которые я хочу получить из пары текстовых файлов в папке. Для каждого файла в папке я создаю pandas .DataFrame для хранения данных. На данный момент он работает правильно, и все файлы имеют одинаковое количество строк.

Теперь я хочу добавить каждый из этих фреймов данных в «основной» фрейм данных, содержащий их все. Я хотел бы добавить каждый из этих фреймов данных в основной фрейм данных с именем файла.
У меня уже есть имя файла.

Например, скажем, у меня есть 2 фрейма данных с собственными именами файлов, я хочу добавить их в основной фрейм данных с заголовком для каждого из этих 2 фреймов данных, представляющих имя файла.

Сейчас я попробовал следующее:

# T0 data
t0_path = "C:/Users/AlexandreOuimet/Box Sync/Analyse Opto/Crunch/GF data crunch/T0/*.txt"
t0_folder = glob.glob(t0_path)
t0_data = pd.DataFrame()

for file in t0_folder:
    raw_data = parseGFfile(file)
    file_data = pd.DataFrame(raw_data, columns=['wavelength', 'max', 'min'])    
    file_name = getFileName(file)

    t0_data.insert(loc=len(t0_data.columns), column=file_name, value=file_data)

Может ли кто-нибудь помочь мне с этим, пожалуйста?
Спасибо:)

Редактировать: Я думаю, что я не было достаточно ясно, это то, что я ожидаю в качестве вывода:
output

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Возможно, вы ищете функцию concat . Вот пример:

import pandas as pd

A = pd.DataFrame({'Col1': [1, 2, 3], 'Col2': [4, 5, 6]})
B = pd.DataFrame({'Col1': [7, 8, 9], 'Col2': [10, 11, 12]})

a_filename = 'a_filename.txt'
b_filename = 'b_filename.txt'

A['filename'] = a_filename
B['filename'] = b_filename

C = pd.concat((A, B), ignore_index = True)

print(C)

Вывод:

   Col1  Col2        filename
0     1     4  a_filename.txt
1     2     5  a_filename.txt
2     3     6  a_filename.txt
3     7    10  b_filename.txt
4     8    11  b_filename.txt
5     9    12  b_filename.txt
1 голос
/ 02 апреля 2020

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

  1. Указано, какие столбцы будут иметь ваш главный DataFrame
  2. Вместо использования какой-либо функции, которую, кажется, вы пытались определить, вы можете просто создайте новый столбец с именем «имя_файла», который будет путь к файлу, используемый для создания DataFrame для каждой записи в этом DataFrame. Таким образом, когда вы объединяете DataFrames, происхождение каждой записи ясно. Я прокомментировал, что вы можете вносить изменения в эту конкретную часть, если вы хотите использовать строковые методы для очистки имен файлов.
  3. В конце не используйте вставку. Для объединения DataFrames с одинаковыми столбцами (операция объединения, если вы знакомы с SQL или с теорией множеств), вы можете использовать метод append.
# T0 data
t0_path = "C:/Users/AlexandreOuimet/Box Sync/Analyse Opto/Crunch/GF data crunch/T0/*.txt"
t0_folder = glob.glob(t0_path)
t0_data = pd.DataFrame(columns=['wavelength', 'max', 'min','file_name'])

for file in t0_folder:
    raw_data = parseGFfile(file)
    file_data = pd.DataFrame(raw_data, columns=['wavelength', 'max', 'min'])    
    file_data['file_name'] = file #You can make edits here

    t0_data  = t0_data.append(file_data,ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...