按另一列的值分组的列

2024-09-27 21:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个新列,其中的bined值由另一列分组。具有按年份划分的箱的示例数据集如下所示:

Year    A   Bin
1999    1   [1-3]
1999    3   [1-3]
1999    10  [10-11]
1999    11  [10-11]
2000    43  [39-43]
2000    39  [39-43]
2000    22  [20-23]
2000    21  [20-23]
2001    11  [10-11]
2001    10  [10-11]
2001    198 [185-200]
2001    188 [185-200]

我用过pd.cut,但是我很难在每年内把它放到bin中,而不是整个专栏。 我尝试使用这个函数,但得到一个错误:TypeError: 'Series' object is not callable。你知道吗

def var_to_bins(dataset, var, num_bins):
    dataset[str(var)+'_test'] = dataset.groupby(dataset.survyear(pd.cut(dataset[var], num_bins)))

有没有更好的办法?你知道吗


Tags: 数据函数示例binvaryeardatasetnum
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:21

我认为需要:

dataset['Bins'] = dataset.groupby('Year')['A'].transform(lambda x: pd.cut(x, 2))
print (dataset)
    Year    A        Bin            Bins
0   1999    1      [1-3]     (0.99, 6.0]
1   1999    3      [1-3]     (0.99, 6.0]
2   1999   10    [10-11]     (6.0, 11.0]
3   1999   11    [10-11]     (6.0, 11.0]
4   2000   43    [39-43]    (32.0, 43.0]
5   2000   39    [39-43]    (32.0, 43.0]
6   2000   22    [20-23]  (20.978, 32.0]
7   2000   21    [20-23]  (20.978, 32.0]
8   2001   11    [10-11]  (9.812, 104.0]
9   2001   10    [10-11]  (9.812, 104.0]
10  2001  198  [185-200]  (104.0, 198.0]
11  2001  188  [185-200]  (104.0, 198.0]

相关问题 更多 >

    热门问题