Iterrows Pandas erhalten den nächsten Zeilenwert
Ich habe ein df in pandas
import pandas as pd
df = pd.DataFrame(['AA', 'BB', 'CC'], columns = ['value'])
Ich soll zum Durchlaufen der Zeilen im df. Für jede Zeile möchte ich Zeiles value and next row
s Wert
So etwas wie(es funktioniert nicht):
for i, row in df.iterrows():
print row['value']
i1, row1 = next(df.iterrows())
print row1['value']
Als Ergebnis möchte ich
'AA'
'BB'
'BB'
'CC'
'CC'
*Wrong index error here
In diesem Punkt habe ich Durcheinander Weg, um dieses Problem zu lösen
for i in range(0, df.shape[0])
print df.irow(i)['value']
print df.irow(i+1)['value']
Ist es effizienter Weg, um dieses Problem zu lösen?
InformationsquelleAutor der Frage Ayrat | 2014-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, Ihre "unordentlich" ist ok, es ist nichts falsch mit der Verwendung von Indizes in der dataframe, und dies nicht zu langsam ist. iterrows() selbst ist nicht furchtbar schnell.
Eine version von Ihrer ersten Idee, die funktionieren würde, wäre:
Die zweite Methode könnte etwas ähnliches machen, zum speichern eines index in der dataframe:
Wenn die Geschwindigkeit kritisch ist, können Sie immer versuchen beide und mal den code.
InformationsquelleAutor der Antwort alisdt
Es ist ein
pairwise()
Funktion beispielsweise in deritertools
Dokument:Hier ist die Ausgabe:
Aber ich denke, iter Zeilen in einer
DataFrame
langsam ist, wenn man erklären kann, was ist das problem, das Sie lösen wollen, vielleicht kann ich Ihnen einige bessere Methode.InformationsquelleAutor der Antwort HYRY
Dies kann gelöst werden, auch durch
izip
ping-dataframe (iterator) mit einem offset-version von sich selbst.Natürlich die Indizierung Fehler nicht reproduziert werden können, auf diese Weise.
Check this out
gibt
InformationsquelleAutor der Antwort Acorbe