将列按另一列

时间:2018-03-15 14:55:23

标签: python pandas

我想创建一个新列,其中分箱值按另一列分组。按年分类的样本数据集如下所示:

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)))

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为需要:

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]