[英]Functions within np.array
我正在尝试将我具有的.values转换为其中具有函数的数组,但会继续出现错误。 希望能有所帮助!
这是.values:
Y = df['GDP_growth'].values
array(['3.299991384', '-1.760010328', '5.155440545', '4.019541839',
'0.801760179', '7.200000003', '3.727818428', '0.883846197'], dtype-object)
这是使出现错误的数组的命令:
Y = np.array([1 if y>= 3 else 0 for y in Y])
在我的情况下,错误在于结果全部为1。
您可以使用numpy过滤,但是首先需要根据需要将类型从str
或object
更改为float
或np.float
:
import numpy as np
Y = np.array(['3.299991384', '-1.760010328', '5.155440545', '4.019541839',
'0.801760179', '7.200000003', '3.727818428', '0.883846197'], dtype=object)
Y = Y.astype(float)
Y[Y<=3] = 0
Y[Y>3] = 1
In [67]: Y
Out[67]: array([ 1., 0., 1., 1., 0., 1., 1., 0.])
编辑
如果需要一些预处理以将数据转换为数字值,则可以使用to_numeric
,然后将dropna
转换为有趣的序列或整个数据帧 ,即序列:
z = pd.Series(Y)
z[0] = 'a'
In [293]: z
Out[293]:
0 a
1 -1.760010328
2 5.155440545
3 4.019541839
4 0.801760179
5 7.200000003
6 3.727818428
7 0.883846197
dtype: object
pd.to_numeric(z, errors='coerce').dropna()
In [296]: pd.to_numeric(z, errors='coerce').dropna()
Out[296]:
1 -1.760010
2 5.155441
3 4.019542
4 0.801760
5 7.200000
6 3.727818
7 0.883846
dtype: float64
弄清楚了! 显然我有一些表示为'..'的缺失值,所以我必须先删除那些行以将其弄乱-然后可以应用.astype
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.