【发布时间】:2021-08-17 05:33:02
【问题描述】:
我有一栏如下:
A B
0 0 20.00
1 1 35.00
2 2 75.00
3 3 29.00
4 4 125.00
5 5 16.00
6 6 52.50
7 7 NaN
8 8 NaN
9 9 NaN
10 10 NaN
11 11 NaN
12 12 NaN
13 13 239.91
14 14 22.87
15 15 52.74
16 16 37.20
17 17 27.44
18 18 57.01
19 19 29.88
我想按如下方式更改列的值
如果0<B<10.0,则将B的单元格值替换为“0到10”
如果10.1<B<20.0,则将B的单元格值替换为“10到20”
像这样继续,直到达到最大范围。
我试过了
ds['B'] = np.where(ds['B'].between(10.0,20.0), "10 to 20", ds['B'])
但是一旦我执行了这个操作,DataFrame 就被字符串"10 to 20" 占用了,所以我不能对DataFrame 的剩余值再次执行这个操作。在这一步之后,DataFrame 如下所示:
A B
0 0 10 to 20
1 1 35.0
2 2 75.0
3 3 29.0
4 4 125.0
5 5 10 to 20
6 6 52.5
7 7 nan
8 8 nan
9 9 nan
10 10 nan
11 11 nan
12 12 nan
13 13 239.91
14 14 22.87
15 15 52.74
16 16 37.2
17 17 27.44
18 18 57.01
19 19 29.88
以下行:ds['B'] = np.where(ds['B'].between(20.0,30.0), "20 to 30", ds['B']) 将抛出 TypeError: '>=' not supported between instances of 'str' and 'float'
我如何编写代码以一次将 DataFrame 中的所有值更改为这些范围字符串?
【问题讨论】:
标签: python pandas replace conditional-statements