根据每个值对列的值进行分组[重复]

Posted

技术标签:

【中文标题】根据每个值对列的值进行分组[重复]【英文标题】:Group values of a column based on each value [duplicate] 【发布时间】:2019-11-20 23:47:51 【问题描述】:

我有一张表,其中有一些列,其中一列的值从 0 到 400。我们称它为 x 列。

现在我想根据值在表中对这些信息进行分组。 我想要一个新列“valuerange”,说明 x 列的值在哪个范围内。 例如,列 x 的值位于特定的第 120 行,因此我希望在新列“100-150”中。

也许我需要提一下,该表是一个包含 210k 行的大型数据框。

我已经尝试过自己,但我无法达到预期的结果,因为我是 python 新手,只是习惯了 java。

这是我尝试过的一些代码:

df1 = df['valuerange'] = ['0-50' if p<=50 '51-100' elif p<=100 '101-150' elif p<=150
                            '151-200' elif p<=200 '201-250' elif p<=250 '251-300' elif p<=300
                            '301-350' elif p<=350 '351-400' elif p<=400 for p in df.x]

【问题讨论】:

我建议查看pandas.cut 【参考方案1】:

pandas.cut 可能是您需要的。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    'values' : np.random.randint(low=0, high=401, size=500)
)
# df.head():
    values
0   35
1   10
2   61
3   19
4   144

df['valuerange'] = pd.cut(
    df['values'],
    bins= [0,50,100,150,200,250,300,350,400],
    labels=['0-50', '51-100',
        '100-150', '151-200', '201-250', 
        '251-300', '301-350', '351-400']
)
    values  valuerange
0   35      0-50
1   10      0-50
2   61      51-100
3   19      0-50
4   144     100-150

【讨论】:

以上是关于根据每个值对列的值进行分组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法根据熊猫中的唯一值对列进行排序?

如何根据列的值对观察值重新编号[重复]

如何根据相同的值对数组进行分组

在sql中使用case语句根据某些条件对列进行分组

在pandas df中,对列的值在范围内的行进行分组。

使用 Linux 工具根据另一列的 id 对列的值求和