首页 > 解决方案 > 在熊猫中,应该如何添加年龄范围列?

问题描述

假设我有一个简单的 DataFrame,它详细说明了人们在一生中演奏音乐的时间,如下所示:

import pandas as pd

df = pd.DataFrame(
    [[15,  8,  7],
     [20, 10, 10],
     [35, 15, 20],
     [50, 12, 38]],
    columns=['current age', 'age started playing music', 'years playing music'])

应该如何添加额外的栏目来分解他们每十年演奏音乐的年数?例如,如果添加的列是 0-10、10-20、20-30 等,那么第一个人在第一个十年演奏音乐的时间为 2 年,第二个十年为 5,第三个为 0,以此类推。

标签: pythonpandas

解决方案


您也可以尝试使用pd.cutand value_counts

df.join(df.apply(lambda x: pd.cut(np.arange(x['age started playing music'], 
                                            x['current age']),
                                  bins=[0, 9, 19, 29, 39, 49], 
                                  labels=['0-10', '10-20', 
                                          '20-30', '30-40',
                                          '40+'])
                             .value_counts(),
                 axis=1))

输出:

   current age  age started playing music  years playing music  0-10  10-20  20-30  30-40  40+
0           15                          8                    7     2      5      0      0    0
1           20                         10                   10     0     10      0      0    0
2           35                         15                   20     0      5     10      5    0
3           50                         12                   38     0      8     10     10   10

推荐阅读