2015-05-14 3 views
0

У меня есть набор данных с 1048 строками, каждый из которых является двумя сторонами одного и того же набора данных (демократия и республиканская кампания в той же гонке).Слияние двух строк в одну длинную строку (Pandas)

year label can_par_aff can_inc_cha_ope_sea dem_per gop_per ind_con 0 2014 AK-1 DEM 1 40.8 51.6 36500.64
1 2014 AK-1 REP 0 40.8 51.6 43369.00
И мне нужно объединить их в одну строку с ind_con_dem и ind_con_gop (чтобы я мог создавать сравнительные показатели).

Я не могу найти простой способ автоматизировать это. Важными факторами являются то, что он группируется как «год» и «метка», так и создает новые имена столбцов.

Я могу сделать это с помощью очень специфического кода, но я не могу понять, как его обобщить.

Мысли, идеи и т. Д.?

ответ

1

Если предположить, что dataframe является df и label и year однозначно идентифицировать записи, попробуйте:

df_dem = df[df['can_par_aff'] == 'DEM'].groupby(['year','label']).last() 
df_rep = df[df['can_par_aff'] == 'REP'].groupby(['year','label']).last() 

joined = df_dem.join(df_rep, lsuffix = '_dem', rsuffix = '_gop') 

Это сгруппированных по year и label и создает новые имена, как указано выше.

1

Это также индексирует наш DataFrame (df) на основе года и ярлыка.

df = df.set_index(['year', 'label', 'can_par_aff']).unstack() 
>>> df 

      can_inc_cha_ope_sea  dem_per  gop_per   ind_con  
can_par_aff     DEM REP  DEM REP  DEM REP  DEM REP 
year label                   
2014 AK-1      1 0  40.8 40.8  51.6 51.6 36500.64 43369 
Смежные вопросы