Я пытаюсь создать пригодный для использования Pandas DataFrame из определенного CSV-файла. Файл имеет один столбец для идентификации типа теста, для которого используется строка данных, два столбца, которые идентифицируют измеряемое устройство, а остальные столбцы содержат данные.Python - Pandas - Создание столбцов из записей строк
на вход .csv файл имеет следующий формат:
testtype1, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n
testtype2, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n
testtype3, device1name, device1info, meas_1, meas_2, meas_3, ... ... , meas_n
testtype1, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n
testtype2, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n
testtype2, device2name, device2info, meas_1, meas_2, meas_3, ... ... , meas_n
... ... ... ... ... ... ...
И так далее. Я пытаюсь получить эти данные в следующий формат:
devicename deviceinfo testtype1 testtype2 testtype3
device1name device1info meas_1 meas_1 meas_1
device1name device1info meas_2 meas_2 meas_2
device1name device1info meas_3 meas_3 meas_3
... ... ... ... ...
device1name device1info meas_n meas_n meas_n
device2name device2info meas_1 meas_1 meas_1
device2name device2info meas_2 meas_2 meas_2
... ... ... ... ...
Я прочитал файл, используя pd.read_csv(filename)
, но как только у меня есть данные, которые я застреваю. Я посмотрел на использование df.pivot
, а также транспонирование среза данных с помощью измерений, однако я понятия не имею, куда идти отсюда. Я очень новичок в Python, поэтому любая помощь будет высоко оценена!
Я пытаюсь для использования функции 'pd.pivot_table()', но она принимает среднее значение каждого из измерений «meas_n» из разных тестов. То, что я хочу сделать, это создать новую строку для каждого параметра «meas_n», с столбцами для '' devicename '' и '' deviceinfo '', заполненными соответствующим образом, подобно формату базы данных SQL. Не похоже, что для этого есть что-то построенное? – Keegan
Я решил решить эту проблему, перейдя через каждую строку, используя string.split() для данных и записывая это в объект StringIO в том формате, который я хотел. Затем я передал это read_csv() и получил данные в нужном формате. – Keegan