我想创建一个新列,其中的分箱值按另一列分组。按年份划分的样本数据集如下所示:
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
,但我很难将其在每年内而不是整个列中进行分类。
我尝试使用此函数,但收到错误: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)))
有没有更好的方法来解决这个问题?
最佳答案
我认为需要:
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]
关于python - 将一列按另一列的值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302707/