Python 3.x 如何在python中生成标签并使用它对数据帧列进行分类?

Python 3.x 如何在python中生成标签并使用它对数据帧列进行分类?,python-3.x,list-comprehension,Python 3.x,List Comprehension,我是Python新手。仍在学习列表理解。我把年龄作为一个连续的数字变量,我需要将它bucketize为0-10,10-20,20-30…90+。我将调用下面的函数。我需要对数据中的100列使用不同的上下值,需要非常高效和简洁。有没有更好的方法来实现这一点 def createfactor(x, lower, upper, by, sep="-", above_char="+"): labs = [] curr = lower while curr < upper -

我是Python新手。仍在学习列表理解。我把年龄作为一个连续的数字变量,我需要将它bucketize为0-10,10-20,20-30…90+。我将调用下面的函数。我需要对数据中的100列使用不同的上下值,需要非常高效和简洁。有没有更好的方法来实现这一点

def createfactor(x, lower, upper, by, sep="-", above_char="+"):
    labs = []
    curr = lower
    while curr < upper - by:
        labs.append(str(curr) + sep + str(curr + by))
        curr = curr + by
    labs.append(str(upper - by) + above_char)
    y = pandas.cut(x, bins=numpy.linspace(lower,upper,upper/by+1), labels=labs)
    return y
def createfactor(x,下,上,by,sep=“-”,over_char=“+”):
实验室=[]
电流=较低
当电流<上限时,通过:
附加(str(curr)+sep+str(curr+by))
当前=当前+当前
附加(str(upper-by)+over_char)
y=pandas.cut(x,bins=numpy.linspace(下、上、上/by+1),labels=labs)
返回y

您可以尝试使用熊猫。剪切:

将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame({“age”:[4,23,45,39,76,91,110,10],“x”:[1,2,1,5,2,8,1,1]})
打印(pd.merge(df,pd.cut(df[“age”],bins=pd.IntervalIndex.from_tuples([(0,10),(11,20),(21,30),(31,40),(41,50),(51,60),(61,70),(71,80),(81,90),(90,np.Infinity)],右=真,左=真,右=真,右=真,how=“outer”,后缀=[“”,“_bins”])
输出:

age x age\u bin
0    4  1   (0.0, 10.0]
1   23  2  (21.0, 30.0]
2   45  1  (41.0, 50.0]
3   39  5  (31.0, 40.0]
4   76  2  (71.0, 80.0]
5918(90.0,inf)
61101(90.0,inf)
7   10  1   (0.0, 10.0]
[程序完成]

您可以尝试使用熊猫。剪切:

将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame({“age”:[4,23,45,39,76,91,110,10],“x”:[1,2,1,5,2,8,1,1]})
打印(pd.merge(df,pd.cut(df[“age”],bins=pd.IntervalIndex.from_tuples([(0,10),(11,20),(21,30),(31,40),(41,50),(51,60),(61,70),(71,80),(81,90),(90,np.Infinity)],右=真,左=真,右=真,右=真,how=“outer”,后缀=[“”,“_bins”])
输出:

age x age\u bin
0    4  1   (0.0, 10.0]
1   23  2  (21.0, 30.0]
2   45  1  (41.0, 50.0]
3   39  5  (31.0, 40.0]
4   76  2  (71.0, 80.0]
5918(90.0,inf)
61101(90.0,inf)
7   10  1   (0.0, 10.0]
[程序完成]

谢谢。但是,我需要使用传递给函数的下限值、上限值和步长值自动生成箱子和标签,并且不能硬编码这些,因为我有几个列需要处理“剪切”和categorize.Hm,对于step和lower/upper-bound,我仍然会使用上面的方法,使用列表理解。您可以相对轻松地生成具有bin限制的元组列表。查看链接中的文档-我认为它可能适合您。我的主要问题不是剪切。而是生成标签,而不是默认的标签。谢谢。不过r、 我需要使用传递给函数的下限值、上限值和步长值自动生成箱子和标签,并且不能硬编码,因为我有几个列需要处理“剪切”和categorize.Hm,对于step和lower/upper-bound,我仍然会使用上面的方法,使用列表理解。您可以相对轻松地生成具有bin限制的元组列表。查看链接中的文档-我认为这可能适合您。我的主要问题不是剪切。而是生成标签,而不是默认标签。