2016-07-05 72 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

相关问题