我从人们出售汽车的本地网站上抓取了一些数据。我有一些有用的数据,例如汽车的制造年份,里程,价格等。我有一个Year-Price图表,但我想根据BUT里程对其进行着色,以便每年将对应的里程分为三类。
我尝试了以下代码:
df.milage_year = df.loc[df.year==1395].cut(df.milage, 3, labels=['g', 'y', 'r'])
但是我得到这个错误:
AttributeError:“ DataFrame”对象没有属性“ cut”
更新:Cut方法根据值起作用!但是,如果要根据案例数进行分类,应该使用哪种方法?
更新2:这是我的输入数据:
里程价格年份
0 41000 70000000 1396
1 33011 73000000 1396
2 2200 81000000 1397
3 116000 45000000 1389
4 18000 71000000 1394
5 54033 65000000 1395
6 183000 42000000 1385
7 226053 44000000 1387
8 150000 45000000 1387
9 4000 78000000 1397
10 246000 42500000 1388
11 143500 35000000 1382
12 197000 40000000 1387
13 250000 38000000 1385
14 2795 81000000 1397
15 17000 40000000 1397
16 180000 30000000 1389
17 100000 61000000 1394
18 27223 71000000 1396
19 140000 49500000 1388
20 65500 71000000 1396
我的预期输出是一个名为Mileage_year的新列,该列具有三个值:“ g”,“ y”和“ r”,并将这些值分配给每个“年”的“里程”,以便三分之一的情况下里程数为“ r”,值较低的情况下三分之一为“ g”,其余三分之一的情况下为“ y”
答案 0 :(得分:2)
您可以先group by
,然后apply
qcut
,像这样:
df['mileage_year'] = df.groupby('year').mileage.apply(lambda x: pd.qcut(x, 3, labels=['g', 'y', 'r'], duplicates='drop'))