2017-04-11 2 views
1

ich eine CSV-Datei in einen Pandas Datenrahmenmultiplizieren alle Spalten von 100 außer erster Spalte (Indexspalten oder die Epoche Datumzeit)

df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5]) 

hier gelesen habe, ist das Format des Datenrahmen

mein erster Datenrahmen:

  0  1  2  3  4  5 
0 1451606820 1.0862 1.08630 1.08578 1.08578 25 
1 1451608800 1.0862 1.08630 1.08578 1.08610 10 
2 1451608860 1.0862 1.08620 1.08578 1.08578 16 
3 1451610180 1.0862 1.08630 1.08578 1.08578 27 
4 1451610480 1.0858 1.08590 1.08560 1.08578 21 
5 1451610540 1.0857 1.08578 1.08570 1.08578 2 
6 1451610600 1.0857 1.08578 1.08570 1.08578 2 
7 1451610720 1.0857 1.08578 1.08570 1.08578 2 
8 1451610780 1.0857 1.08578 1.08570 1.08578 2 

Column '0' = Datetime in Epoch time 
Columns 1,2,3,4,5 are values 

ich möchte nur Spalten 1,2,3,4,5 mit 100 multiplizieren, ohne Spalte 0 zu ändern oder Multiplikation Spalte 0 von 100

ich versuchte

df.multiply(100) 

aber es multipliziert jede Spalte von 100, Spalte 0.

Auch auf meiner Spalte 1 werden die Dezimalstellen weiterhin auf 4 anstatt 5 wie andere Spalten abgeschnitten. Ich bin nicht sicher, was das selbst verursacht, obwohl in der CSV-Datei i

1451606820 , 1.08622 , 1.08630 , 1.08578 , 1.08578 , 25 
    1451608800 , 1.08626 , 1.08630 , 1.08578 , 1.08610 , 10 
    1451608860 , 1.08623 , 1.08620 , 1.08578 , 1.08578 , 16 
    1451610180 , 1.08627 , 1.08630 , 1.08578 , 1.08578 , 27 
    1451610480 , 1.08588 , 1.08590 , 1.08560 , 1.08578 , 21 

Antwort

2

haben Sie Index aus der ersten Spalte durch Parameter index_col in read_csv gesetzt und dann mehrfach:

df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5], index_col=0) 

und dann

df = df.mul(100) 

Oder:

df = df * 100 

Eine andere Lösung ist select durch iloc und mehrere:

df.iloc[:,1:] = df.iloc[:,1:] * 100 

df.iloc[:,1:] = df.iloc[:,1:].mul(100) 

Probe:

df = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6], 
        'C':[7,8,9], 
        'D':[1,3,5], 
        'E':[5,3,6], 
        'F':[7,4,3]}) 

print (df) 
    A B C D E F 
0 1 4 7 1 5 7 
1 2 5 8 3 3 4 
2 3 6 9 5 6 3 

df.iloc[:,1:] = df.iloc[:,1:] * 100 
print (df) 
    A B C D E F 
0 1 400 700 100 500 700 
1 2 500 800 300 300 400 
2 3 600 900 500 600 300 
Verwandte Themen