English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
索引重建 ändert die Zeilen- und Spaltenbezeichner des DataFrames. Neureferenzierung bezieht sich darauf, die Daten so zu machen, dass sie mit einer bestimmten Gruppe von Labels auf einer bestimmten Achse übereinstimmen.
Viele Operationen können durch Indexing durchgeführt werden, z.B.-
Sortieren Sie vorhandene Daten neu, um eine neue Gruppe von Labels zu entsprechen.Fügen Sie fehlende Werte (NA) an Positionen von Labeln hinzu, an denen keine Daten existieren.
import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': np.linspace(0,stop=N-1,num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Niedrig','Mittel','Hoch'],N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() ) # DataFrame-Rekonstruktion der Index df_reindexed = df.reindex(index=[02,5], columns=['A', 'C', 'B']) print(df_reindexed)
Laufende Ergebnisse:
A C B 0 2016-01-01 Niedrig NaN 2 2016-01-03 Hoch NaN 5 2016-01-06 Niedrig NaN
Sie möchten möglicherweise ein Objekt erhalten und es so neu referenzieren, dass es mit einem anderen Objekt übereinstimmt. Betrachten Sie den folgenden Beispiel, um das gleiche Konzept zu verstehen.
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3']) df1 = df1.reindex_like(df2) print(df1)
Laufende Ergebnisse:
col1 col2 col3 0 -2.467652 -1.211687 -0.391761 1 -0.287396 0.522350 0.562512 2 -0.255409 -0.483250 1.866258 3 -1.150467 -0.646493 -0.222462 4 0.152768 -2.056643 1.877233 5 -1.155997 1.528719 -1.343719 6 -1.015606 -1.245936 -0.295275
Hier, df1 DataFrame wie df2wird ebenfalls geändert und neu referenziert. Die Spaltennamen sollten übereinstimmen,否则整个列标签将被添加NAN。
reindex() Mit dem optionalen Parameter 'method', handelt es sich um eine Füllmethode, deren Werte wie folgt sind
pad/ffill − Füllen mit dem Wert vorwärts
bfill/backfill − Füllen mit dem Wert nach hinten
nearest − Füllen mit dem nächsten Indexwert
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) # Füllen von NAN print df2.reindex_like(df1) # Füllen von NAN mit den vorherigen Werten print("Datenframe mit vorwärtsgefüllten Daten:") print(df2.reindex_like(df1,method='ffill'))
Laufende Ergebnisse:
col1 col2 col3 0 1.311620 -0.707176 0.599863 1 -0.423455 -0.700265 1.133371 2 NaN NaN NaN 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN Datenframe mit vorwärtsgefüllten Daten: col1 col2 col3 0 1.311620 -0.707176 0.599863 1 -0.423455 -0.700265 1.133371 2 -0.423455 -0.700265 1.133371 3 -0.423455 -0.700265 1.133371 4 -0.423455 -0.700265 1.133371 5 -0.423455 -0.700265 1.133371
Die letzten vier Zeilen werden gefüllt.
Der Parameter 'limit' bietet zusätzliche Kontrolle beim Neureferenzierten Füllen. Es beschränkt die maximale Anzahl der aufeinanderfolgenden Übereinstimmungen. Lassen Sie uns den folgenden Beispiel betrachten, um das gleiche Konzept zu verstehen-
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) # Füllen von NAN print df2.reindex_like(df1) # Füllen von NAN mit den vorherigen Werten1Datenrahmen:") print(df2.reindex_like(df1,method='ffill',limit=1))
Laufende Ergebnisse:
col1 col2 col3 0 0.247784 2.128727 0.702576 1 -0.055713 -0.021732 -0.174577 2 NaN NaN NaN 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN Vorwärtszufüllung ist begrenzt auf1Datenrahmen: col1 col2 col3 0 0.247784 2.128727 0.702576 1 -0.055713 -0.021732 -0.174577 2 -0.055713 -0.021732 -0.174577 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN
Beachten Sie, dass die erste Zeile nur die siebte Zeile gefüllt hat. Die anderen Zeilen bleiben unverändert.
Mit dem rename() -Verfahren können Sie die Markierung der Achsen auf der Grundlage bestimmter Abstimmungen (Wörterbuch oder Serie) oder einer beliebigen Funktion neu zuweisen.
Lassen Sie uns das folgendermaßen betrachten, um dies zu verstehen-
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) print df1 print ("Nach Umbenennung von Zeilen und Spalten:") print(df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'}, index = {0 : 'apple', 1 : 'banana', 2 : 'durian'}))
Laufende Ergebnisse:
col1 col2 col3 0 0.486791 0.105759 1.540122 1 -0.990237 1.007885 -0.217896 2 -0.483855 -1.645027 -1.194113 3 -0.122316 0.566277 -0.366028 4 -0.231524 -0.721172 -0.112007 5 0.438810 0.000225 0.435479 Nach Umbenennung von Zeilen und Spalten: c1 c2 col3 apple 0.486791 0.105759 1.540122 banana -0.990237 1.007885 -0.217896 durian -0.483855 -1.645027 -1.194113 3 -0.122316 0.566277 -0.366028 4 -0.231524 -0.721172 -0.112007 5 0.438810 0.000225 0.435479