我的数据集中有此列,当我使用df [col] .value_counts()从数据集中获取值计数时,就得到了
timeatempl:
36+ 89538
0 3472
24 3010
12 2729
3 2453
2 2434
13 2426
1 2403
4 2365
5 2270
6 2202
7 2112
9 2039
8 1966
15 1941
14 1940
16 1910
25 1899
11 1855
17 1820
26 1806
10 1789
27 1772
23 1747
28 1738
18 1718
22 1621
29 1613
20 1606
21 1561
19 1546
30 1469
31 1462
32 1413
34 1323
35 1320
33 1304
-6 2
-7 1
-5 1
Name: timeatepl, dtype: int64
我一直试图将其转换为5范围内的分类标称值。例如, 如果该值大于36,则为10 如果该值在31到35之间,它将表示为9,依此类推。
这是到目前为止我尝试过的示例
data['timeatepl'].values
for i in val:
if i == '36+':
data['timeatepl'][i].values = 8
elif i in range(31, 36):
data['timeatepl'][i].values = 7
elif i in range(26, 31):
data['timeatepl'][i].values = 6
elif i in range(21, 26):
data['timeatepl'][i].values = 5
elif i in range(16, 21):
data['timeatepl'][i].values = 4
elif i in range(11, 16):
data['timeatepl'][i].values = 3
elif i in range(6, 11):
data['timeatepl'][i].values = 2
elif i in range(1, 6):
data['timeatepl'][i].values = 1
else:
data['timeatepl'][i].values = 0
尽管我没有收到任何特定的错误,但这没有给我想要的输出。我需要df ['timeatepl']列中的每个值都由名义值表示。 请帮忙。
我桌子的例子是这个
timeatempl
7
21
29
36+
36+
36+
0
1
36+
新列应为
timeatempl
2
5
6
8
8
8
0
1
8