熊猫的分类特征操纵

时间:2019-03-19 13:14:35

标签: python pandas

我的数据集中有此列,当我使用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

0 个答案:

没有答案