Skip to main content
 首页 » 编程设计

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

2025年05月04日14yjmyzz

我正在尝试迭代出生列以查找特定年龄组以计算这些组的类别项目。

我的数据集如下。

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 

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

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

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

MiddleAged: (1975 and before) : cat1: 99, cat2: 545, cat82: 644

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

for i in range(len(yas2)): 
    yas3.append(int(yas2[i][-4:])) 

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

请您参考如下方法:

首先通过 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