我有一个数据帧,如下所示:
date price pct
0 2020/6/1 6.000 NaN
1 2020/6/2 3.000 -0.500000
2 2020/6/3 4.000 0.333333
3 2020/6/4 -1.000 -1.250000
4 2020/6/5 -1.025 0.025000
5 2020/6/6 3.000 -3.926829
6 2020/6/7 3.000 0.000000
7 2020/6/8 15.000 4.000000
8 2020/6/9 2.000 -0.866667
9 2020/6/10 2.500 0.250000
现在我想创建一个新的列pct_desc
,以根据以下条件将值从pct
映射到pct
的字符串描述:
(-float(inf), -1] ---> severe decrease
(-1, -0.5] ---> decrease
(-0.5, 0.5] ---> stable
(0.5, 1] ---> increase
(1, float(inf)] ---> severe increase
预期的输出将如下所示:
date price pct pct_desc
0 2020/6/1 6.000 NaN NaN
1 2020/6/2 3.000 -0.500000 decrease
2 2020/6/3 4.000 0.333333 stable
3 2020/6/4 -1.000 -1.250000 severe decrease
4 2020/6/5 -1.025 0.025000 stable
5 2020/6/6 3.000 -3.926829 severe decrease
6 2020/6/7 3.000 0.000000 stable
7 2020/6/8 15.000 4.000000 severe increase
8 2020/6/9 2.000 -0.866667 decrease
9 2020/6/10 2.500 0.250000 stable
我怎样才能在熊猫或Numpy中做到这一点?谢谢。
我们做cut
pd.cut(df.pct,[-np.inf,-1,-0.5,0.5,1,np.inf],labels=['se d','de','st','in','se i'])
0 NaN
1 de
2 st
3 se d
4 st
5 se d
6 st
7 se i
8 de
9 st
Name: pct, dtype: category
Categories (5, object): [se d < de < st < in < se i]