2017-12-15 4 views
-2

Ich lese von einer Variablen "RF" aus CSV-Datei und dann habe ich eine "Array" -Daten. Ich möchte eine Gleichung zwischen beiden Variablen setzen. Daher konvertiere ich meinen Array-Datensatz in das "RF" -Datenformat. In meiner CSV-Datei habe ich 8 Variablen, aber momentan lese ich nur eine Variable. Wenn ich den Code ausführe, gibt es einen Fehler.Fehler beim Neuanordnen von np.array zu float64 Daten während der Berechnung

import numpy as np 
import pandas as pd 
import csv 
data_df = pd.read_csv('poly2_decpred_juneRF.csv', header=0, nrows=67) 
y1 = data_df['RF'] 
y1.head(67) 

finalpred1=[2.22, 2.33, 3.33, 1.21, 2.22, 2.33, 3.33, 1.21, 2.22, 2.33, 3.33, 1.21, 2.22, 2.33, 3.33, 1.21, 2.33] 
s = pd.Series(finalpred1, name='RF') 
print(s) 
y111=y1[50:67] 
print(y111) 
diff = ((y111-s)/y111)*100 
print(diff) 

Der Ausgang wird wie folgt kommen:

0 NaN 
1 NaN 
2 NaN 
3 NaN 
4 NaN 
5 NaN 
6 NaN 
7 NaN 
8 NaN 
9 NaN 
10 NaN 
11 NaN 
12 NaN 
13 NaN 
14 NaN 
15 NaN 
16 NaN 
50 NaN 
51 NaN 
52 NaN 
53 NaN 
54 NaN 
55 NaN 
56 NaN 
57 NaN 
58 NaN 
59 NaN 
60 NaN 
61 NaN 
62 NaN 
63 NaN 
64 NaN 
65 NaN 
66 NaN 
Name: RF, dtype: float64 

Die CSV-Datensatz in diesem Format angegeben:

RF,Nino,IOD,SOI,NAO,TNA,TSA,MEI 
103.77,-1.04,0.20,2.70,-1.02,0.18,-0.92,-1.26 
83.99,0.71,0.16,-1.70,1.32,-0.07,0.00,0.48 
86.97,-0.55,0.21,-1.30,-0.43,0.55,-0.14,-0.12 
152.58,0.15,0.11,-1.00,-0.47,0.17,-0.41,0.32 
230.83,-0.79,0.18,0.60,0.69,-0.30,-0.23,-1.11 
223.45,-1.52,-0.06,-0.50,0.17,0.30,-0.57,-1.88 
118.26,-0.58,0.08,1.50,0.10,0.05,-0.49,-1.02 
93.58,1.18,-0.02,-0.60,0.12,0.17,-0.16,1.25 
.......................................... 
132.30,2.56,0.49,0.10,2.24,0.42,0.70,2.11 
110.00,-0.51,-0.07,0.40,0.48,0.52,0.67,-0.12 

Gesamt Zeilen 67: Bitte helfen Sie mir

+0

Kennen Sie überhaupt die Tags, die Sie verwenden? –

Antwort

1
out

Ich denke, Sie können stattdessen verwenden Series:

s = pd.Series(finalpred1, name='RF') 

numpy array:

s = np.array(finalpred1) 

weil es unterschiedliche Indexwerte sind und nicht überein, so ausgegeben werden NaN s

Aber besser ist Filter nur RF Spalte und überspringen erste 50 Reihen:

s = pd.read_csv('poly2_decpred_juneRF.csv', 
       header=0, 
       nrows=17, 
       skiprows=range(1, 50), 
       usecols=['RF']) 
Verwandte Themen