English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas Indexrekonstruktion

索引重建 ä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.

Beispiel:

 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

Neureferenzierung, um mit anderen Objekten abzustimmen

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.

Beispiel

 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。

Füllen beim Neureferenzierten

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

Beispiel

 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.

Beschränkung des Füllens beim Neureferenzierten

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-

Beispiel

 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.

Umbenennen

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