根据每个值对列的值进行分组

时间:2019-07-11 09:34:34

标签: python pandas data-science data-analysis

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

现在,我想根据值将这些信息分组在表中。 我想要一个新的列“ valuerange”,该列表示列x的值在哪个范围内。 例如,列x的值在特定的行120上,因此我想要在新列“ 100-150”中。

也许我需要提到表是一个具有21万行的大型数据框。

我已经准备好尝试一下自己,但是由于我是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]

1 个答案:

答案 0 :(得分: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