Преобразование выходных данных таблицы CSV в чувствительный Pandas Dataframe - PullRequest
0 голосов
/ 30 ноября 2018

Мне дали несколько уродливых CSV, которые были из таблицы Tableau.Я только раньше использовал Tableau, и я помню, что мне приходилось формировать данные, прежде чем я смог заставить работать визуальные эффекты.Данные представлены в странном формате, похожем на то, что происходит при создании многоиндексированной сводной таблицы панд.Я хотел бы преобразовать данные, которые я получаю из CSV (aka: df1) в читаемый формат (df2).Я привел небольшой пример того, как выглядят данные в df1:

df1 = {'Unnamed: 0':['', '', 'category_id', "action_a", "action_a", "action_b", "action_b"], 'Unnamed: 1':['', '', 'id1', "blue", "blue","blue", "blue"], 'Unnamed: 2':['', '', 'id2', "1", "1","1", "1"], 'Unnamed: 3':['','',  'id3', "2", "2","2", "2"], 'Unnamed: 4':['', '', 'id4',"3", "4","3", "4"], 'Unnamed: 5':['', '', 'combo_id',"blue_1_2_3", "blue_1_2_4","blue_1_2_3", "blue_1_2_4"], 'Unnamed: 6':['', '20181112', '00:00',"0.6", "0.5","0", "4"], 'Unnamed: 7':['', '20181112', '00:15',"1.6", "0.8","4", "10"], 'Unnamed: 8':['', '20181112', '00:30',"1.2", "0.8","2", "2"], 'Unnamed: 9':['', '20181112', '00:45',"0.8", "1.1","0", "2"]}
df1 = pd.DataFrame(data=df1)

df1:
    Unnamed: 0 Unnamed: 1 Unnamed: 2    ...     Unnamed: 7 Unnamed: 8 Unnamed: 9
0                                       ...                                     
1                                       ...       20181112   20181112   20181112
2  category_id        id1        id2    ...          00:15      00:30      00:45
3     action_a       blue          1    ...            1.6        1.2        0.8
4     action_a       blue          1    ...            0.8        0.8        1.1
5     action_b       blue          1    ...              4          2          0
6     action_b       blue          1    ...             10          2          2

Конечная цель - преобразовать df1 в df2.Я делаю транспонирование в каждом ряду, когда я читаю это?Я попытался исследовать и обнаружил функцию «плавить» в пандах, чтобы разворачивать данные, но мне не удалось использовать ее правильно.Любая помощь / идеи с благодарностью.Спасибо!

df2 = {'year_date':['20181112','20181112','20181112','20181112','20181112','20181112','20181112','20181112'], 'time_id':['00:00','00:15','00:30','00:45','00:00','00:15','00:30','00:45'], 'color_id':['blue','blue','blue','blue','blue','blue','blue','blue'], 'id_2':['1','1','1','1','1','1','1','1'], 'id3':['2','2','2','2','2','2','2','2'], 'id4':['3','3','3','3','4','4','4','4'], 'combo_id':['blue_1_2_3','blue_1_2_3','blue_1_2_3','blue_1_2_3','blue_1_2_4','blue_1_2_4','blue_1_2_4','blue_1_2_4'], 'action_a':['0.6','1.6','1.2','0.8','0.5','0.8','0.8','1.1'], 'action_b':['0', '4','2','0','4','10','2','2']}
df2 = pd.DataFrame(data=df2)

df2: 
  year_date time_id color_id id_2 id3 id4    combo_id action_a action_b
0   2018112   00:00     blue    1   2   3  blue_1_2_3      0.6        0
1   2018112   00:15     blue    1   2   3  blue_1_2_3      1.6        4
2   2018112   00:30     blue    1   2   3  blue_1_2_3      1.2        2
3   2018112   00:45     blue    1   2   3  blue_1_2_3      0.8        0
4   2018112   00:00     blue    1   2   4  blue_1_2_4      0.5        4
5   2018112   00:15     blue    1   2   4  blue_1_2_4      0.8       10
6   2018112   00:30     blue    1   2   4  blue_1_2_4      0.8        2
7   2018112   00:45     blue    1   2   4  blue_1_2_4      1.1        2
...