你可以使用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
到一系列有趣或whole dataframe,即串聯:
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
並且錯誤是什麼意思? 'for'應該在列表解析中的'if'之前。你的'np.array'也填充了字符串而不是數字。你有很多事情要在這裏解決...... – Julien
不要爲''for' /'if'命令,太快讀它。 – Julien