2016-04-07 4 views
1

Ich möchte nur einen Wert in einer bestimmten Zelle in einem Datenrahmen ändern, dann habe ich set_value verwendet. Jedes Mal, wenn ich set_value verwende, wird der gesamte Datenrahmen einmal aufgelistet. Da der Datenrahmen eine große Größe hat (mehr als 10 Millionen Zeilen), wird der Prozess Energie und Zeit verschwenden. Plattform: Spyder (Python 2.7)Python Pandas set_value zeigt den gesamten Datenrahmen an

Dankbar für Rat!

+0

Können Sie ein Beispiel für Ihren Datenrahmen und die gewünschte Ausgabe hinzufügen? – jezrael

Antwort

1

ist das was du willst?

In [69]: df 
Out[69]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 9 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 7 2 8 

In [70]: df.ix[5, 'a'] = 100 

In [71]: df 
Out[71]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 100 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 7 2 8 

statt:

In [72]: df.set_value(9, 'a', 100) 
Out[72]: 
    a b c 
0 8 6 2 
1 9 9 6 
2 1 7 9 
3 9 0 6 
4 0 6 7 
5 100 3 4 
6 4 6 5 
7 8 3 4 
8 0 8 9 
9 100 2 8 

können Sie es auch so:

In [73]: df = df.set_value(9, 'a', 100) 
+0

Danke! Es klappt. –

+0

@CarlZheng, froh zu helfen. Bitte [akzeptieren] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) die hilfreichste Antwort, wenn sie Ihre Frage beantwortet hat - sie zeigt an, dass die Frage bereits gestellt wurde antwortete. – MaxU

1

set_value sehr schnell ist. Was in einer interaktiven Sitzung lang ist, ist die Zeit, um die Ausgabe vorzubereiten.

In [130]: %timeit u.set_value(0,0,3) 
10000 loops, best of 3: 41.9 µs per loop 

In [131]: %timeit u.ix[0,0]=2 
1000 loops, best of 3: 745 µs per loop 

Die zweite Möglichkeit verhindern die Anzeige.

+0

Danke! Der zweite Weg ist, was ich will. –

Verwandte Themen