我有一张表,里面有一些列,一列的值从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]
答案 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