我有一个大型数据框,其中包含以下列:
此处用作示例的数据here
import pandas
x = pd.read_csv('example1_csv.)
x.head()
ID Year Y
22445 1991 40.0
29925 1991 43.333332
76165 1991 403.0
223725 1991 65.0
280165 1991 690.5312
我想将Y
列中的数字更改为类别low
,mid
,high
,其中每个类别都特定于{ {1}}:
Y
替换Low
中-3000
到600
范围内的任何数字。
Y
替换Mid
中601
到1500
范围内的任何数字。
Y
替换High
中1501
到17000
范围内的任何数字。
例如,如果Y
的值介于ID
和Y
之间,则该-3000
的数值将位于{{1} }替换为600
。
一个人如何进行这些替换?我尝试了几种方法,但是每次都遇到ID
和Y
类型错误。此问题中使用的数据文件位于上面的Github链接中。预先非常感谢您的帮助。
答案 0 :(得分:1)
使用numpy.select
import numpy as np
x.Y = np.select([x.Y.lt(601), x.Y.lt(1501), x.Y.lt(17000)], ['Low', 'Mid', 'High'])
答案 1 :(得分:1)
这也应该起作用。
x['Y'] = x['Y'].apply(lambda i : 'Low' if i > -3000 and i < 600 else ('Mid' if i >601 and i < 1500 else 'High'))