将两排合并成一排更长的行(熊猫)

时间:2015-05-14 19:55:41

标签: pandas

我有一个包含1048行的数据集,每行都是同一数据集的两面(同一种族中的民主党和共和党人的竞选活动)。

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将它们合并为一行(因此我可以创建比较指标)。

我似乎找不到一种简单的自动化方法。重要的因素是它们在“年”和“年”之间分组。 AND'标签'并创建新的列名。

我可以使用非常具体的代码执行此操作,但我无法找到一种方法来概括它。

思想,想法等?

2 个答案:

答案 0 :(得分:1)

假设您的数据框为dflabelyear唯一标识记录,请尝试:

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')

yearlabel分组,并按上述指定创建新名称。

答案 1 :(得分: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