根据每个值对列的值进行分组[重复]
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
【讨论】:
以上是关于根据每个值对列的值进行分组[重复]的主要内容,如果未能解决你的问题,请参考以下文章