我有一个表,其中有一些列,其中一列的值从 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
可能就是你所需要的。
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
关于python - 根据每个值对列的值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986130/