2016-07-05 22 views
2

ich ein pandas.Dataframe Objekt in folgendem Format haben:Machen Sie eine neue Spalte pandas.dataframe als gefilterte andere Spalte

Symb  Bid  Ask 
ESU6  207000 207025 
YMU6  12793 12797 
ESU6  207025 207050 
YMU6  12795 12797 

Aber ich will das Objekt neu zu konfigurieren, wie das folgende Format aussehen:

Bid.ESU6  Ask.ESU6  Bid.YMU6  Ask.YMU6 
207000  207025  
          12793  12797 
207025  207050  
          12795  12797 

Gibt es eine einfache Möglichkeit, die Daten ohne eine for-Schleife, die durch jedes Element geht, neu zu konfigurieren?

Vielen Dank im Voraus!

Antwort

1

können Sie pivot_table verwenden:

df1 = df.pivot_table(columns='Symb', values=['Bid','Ask'], index=df.index) 
df1.sort_index(axis=1, level=1, inplace=True) 
df1.columns = ['.'.join(col) for col in df1.columns] 
df1.fillna('', inplace=True) 
print (df1) 
    Bid.ESU6 Ask.ESU6 Bid.YMU6 Ask.YMU6 
0 207000 207025     
1      12793 12797 
2 207025 207050     
3      12795 12797 
+0

funktioniert super! Ich danke dir sehr! Bevor Sie geantwortet haben, habe ich einen ähnlichen Weg gefunden, um alle Symbole zu durchlaufen und durch alle Spalten zu gehen, ähnlich der folgenden: für symb in Symbolen: für col in df.columns : df [Spalte + '.' + symb] = df [col] [(df ['Symb'] == symb)] für col in df.spalten: del df [col] aber ich glaube, dass Ihr Code effizienter ist. Vielen Dank! – sos

Verwandte Themen