python - 将一列按另一列的值分组

标签 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,但我很难将其在每年内而不是整个列中进行分类。 我尝试使用此函数,但收到错误: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/

相关文章:

python - 在 Windows shell 脚本 (cmd.exe) 中,如何将程序的标准输出分配给环境变量?

python - 另一个 reshape 问题

python - Pandas : Group by and count based on specific value

Pandas:根据特定标准创建新框架的最佳方式

python - 如何将元组列表转换为 pandas 数据框,以便每个元组的第一个值代表一列?

python - 使用阈值级别 pandas 过滤数据帧

python - 如何在Tensorflow中将向量转换为单位向量

python - 打印时元素间距均匀

python - 在网页上制作动画 map 的好工具

python - Pandas 数据框中的百分比匹配