2016-07-05 71 views
2

我有以下格式的pandas.Dataframe對象:創建一個新的pandas.dataframe列作爲過濾其他列

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

但我想重新配置的對象,看起來像以下格式:

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

有沒有一種簡單的方法來重新配置數據,而無需通過每個元素的for循環?

非常感謝你提前!

回答

1

您可以使用pivot_table

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

偉大的作品!非常感謝!在您回答之前,我想出了一個類似的方法來獲取它,即遍歷所有符號,並遍歷所有列,類似於以下內容: 代表符號中的符號: 代表col in df.columns : df [col +'。' + symb] = df [col] [(df ['Symb'] == symb)] for col in df.columns: del df [col] 但是,我相信你的代碼更有效率。謝謝! – sos

相關問題