将分类值汇总到第二个变量Python

时间:2014-06-19 22:31:55

标签: python pandas data-analysis

我的数据来自具有预编码分类变量的数据源。不幸的是,这些不是我分析所需的变量,需要将它们汇总到第二列:

age_group  lifestage
18-24      young adult
25-34      adult
35-44      adult
45-54      adult
.          .
.          .
.          .

我目前正在使用循环列表来执行此操作:

ya_list = ['18-24']
adult_list = ['25-34', '35-44', '45-54']

for age in age_group:
    if age in ya_list:
        lifestage = 'young adult' 
    elif age in adult_list:
        lifestage = 'adult'

这适用于此示例,只有几个组可以重新编码,但是当我有10个或更多组的组进行重新编码时,它会变得更加笨拙。我不禁想到必须有更好的方法来做到这一点,但我找不到一个。

2 个答案:

答案 0 :(得分:0)

你想要一本字典:

stages = {'18-24': 'young adult',
          '25-34': 'adult', ...}

for age in age_group:
    lifestage = stages[age]

这是Python中许多elif的规范替代品。

答案 1 :(得分:0)

您可以使用split()和列表理解来获取要使用的实际数字:

for age in age_group:
    lower,higher = [int(i) for i in age.split("-")]
    if higher <= 24:
        lifestage = "young adult"
    elif lower <= 54:
        lifestage = "adult"
    # etc...

不确定您要扩展的是年龄范围的数量或阶段的数量,但希望这将有助于您开始。