Python 3.x 如何在python中生成标签并使用它对数据帧列进行分类?
我是Python新手。仍在学习列表理解。我把年龄作为一个连续的数字变量,我需要将它bucketize为0-10,10-20,20-30…90+。我将调用下面的函数。我需要对数据中的100列使用不同的上下值,需要非常高效和简洁。有没有更好的方法来实现这一点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 -
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限制的元组列表。查看链接中的文档-我认为这可能适合您。我的主要问题不是剪切。而是生成标签,而不是默认标签。