迭代列的条件以查找其他列值

nou*_*ous 1 python pandas

我正在尝试对“出生”列进行迭代以找到特定的年龄组,以对这些组的类别项目进行计数。

我的数据集如下所示。

data = pd.DataFrame({'birth': ['1/12/1980', '2/6/1992', '6/6/1975',
'6/3/2000'], 'problem':['cat3', 'cat2', 'cat1' , 'cat1']})


    birth   problem
0   1/12/1980   cat3
1   2/6/1992    cat2
2   6/6/1975    cat1
3   6/3/2000    cat1
..   ......     ....
15488  9/9/2010    cat55
Run Code Online (Sandbox Code Playgroud)

正确的输出可能是这样的:

年轻(1990-2019):Cat1:55,cat2:154,cat3:84,cat6:5554

成人:(1990-1975):Cat1:99,cat2:5121,cat3:5445

MiddleAged:(1975年及之前):cat1:99,cat2:545,cat82:644

删除标点符号,将类型转换为字符串并尝试如下操作:

for i in range(len(yas2)):
    yas3.append(int(yas2[i][-4:]))
Run Code Online (Sandbox Code Playgroud)

然后迭代条件,但我无法整合和计算问题列。

jez*_*ael 6

先转换柱通过to_datetime,通过合并cut和按组终于找到数GroupBy.size

data = pd.DataFrame({'birth': ['1/12/1980', '2/6/1992', '6/6/1975','6/3/2000'], 
                     'problem':['cat3', 'cat2', 'cat1' , 'cat1']})

data['birth'] = pd.to_datetime(data['birth'], dayfirst=True)

bins = [0, 1975, 1990, 2019]
labels= ['MiddleAged','YoungAdult','Young']
data['bins'] = pd.cut(data['birth'].dt.year, bins=bins, labels=labels)

print (data)
       birth problem        bins
0 1980-12-01    cat3  YoungAdult
1 1992-06-02    cat2       Young
2 1975-06-06    cat1  MiddleAged
3 2000-03-06    cat1       Young

df = data.groupby(['bins','problem']).size().reset_index(name='count')
print (df)
         bins problem  count
0  MiddleAged    cat1      1
1  YoungAdult    cat3      1
2       Young    cat1      1
3       Young    cat2      1
Run Code Online (Sandbox Code Playgroud)