我有一个包含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
我需要使用ind_con_dem和ind_con_gop将它们合并为一行(因此我可以创建比较指标)。
1 2014 AK-1 REP 0 40.8 51.6 43369.00
我似乎找不到一种简单的自动化方法。重要的因素是它们在“年”和“年”之间分组。 AND'标签'并创建新的列名。
我可以使用非常具体的代码执行此操作,但我无法找到一种方法来概括它。
思想,想法等?
答案 0 :(得分:1)
假设您的数据框为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 :(得分: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