2016-07-07 1 views
1

pandas.dataframeオブジェクトでpivot_table関数を呼び出そうとしています。これはpivot_table関数を呼び出す前に、オブジェクトの例を示します。あなたが見ることができるようにpandas.dataframe.pivot_tableを数字ではない一意でない値で使用する

 Bid  Symb  Ask  DateTime 
0 201000 ESU6  201050 2016-06-19 18:59:58.337134544-05:00 
1 201025 ESU6  201075 2016-06-19 18:59:58.337134544-05:00 
2 201000 ESU6  201025 2016-06-19 18:59:59.611987128-05:00 
3 200975 ESU6  201025 2016-06-19 18:59:59.995825670-05:00 

は、DateTime列に重複値があります。私は、結果として、次のデータフレームのオブジェクトを取得するためにpivot_table機能result = object.pivot_table(columns='Symb', values=['Bid','Ask','DateTime'], index=result.index)を呼び出すしたいと思います:

  Bid  Ask  DateTime 
Symb  ESU6 ESU6 ESU6 
0  201000 201050 2016-06-19 18:59:58.337134544-05:00 
1  201025 201075 2016-06-19 18:59:58.337134544-05:00 
2  201000 201025 2016-06-19 18:59:59.611987128-05:00 
3  200975 201025 2016-06-19 18:59:59.995825670-05:00 

しかし、DateTimeのは、数値以外の値を持っているので、pivot_table関数の出力に組み込まれません。最終的に、私は最終的な結果として、これを取得したいと思います:

         Bid.ESU6 Ask.ESU6 
DateTime 
2016-06-19 18:59:58.337134544-05:00 201000 201050 
2016-06-19 18:59:58.337134544-05:00 201025 201075 
2016-06-19 18:59:59.611987120-05:00 201000 201025 
2016-06-19 18:59:59.995825670-05:00 200975 201025 

[お知らせ:問題はpivot_tableは、まず非ユニークインデックスを許可しません(というか、それは、そのようなことをデータを切り捨てるということであるインデックスユニークです)、私はresult = object.pivot_table(columns='Symb', values=['Bid','Ask'], index=object['DateTime'])に電話することはできません。さらに、整数をインデックスとして保持すると、DateTime列が数値以外の値で構成され、単にDateTime列を除外したpivot_tableの結果になるため、単にresult = object.pivot_table(columns='Symb', values=['Bid','Ask','DateTime'], index=object.index)を呼び出すことはできません。もう一つの回避策はDateTimeをdatetimeを表す数値に変換してから変換することですが、これはリソースが高く、時間がかかりすぎます。

ありがとうあらかじめ助けて!

答えて

1

あなたが列DateTimeの値によってピボット後index簡単なセットの新しいことができます:

result = object.pivot_table(columns='Symb', values=['Bid','Ask'], index=object.index) 
result.index = object.DateTime 
#remove Multiindex in columns 
result.columns = ['.'.join(col) for col in result.columns] 
print (result) 
            Bid.ESU6 Ask.ESU6 
DateTime            
2016-06-19 18:59:58.337134544-05:00 201000 201050 
2016-06-19 18:59:58.337134544-05:00 201025 201075 
2016-06-19 18:59:59.611987128-05:00 201000 201025 
2016-06-19 18:59:59.995825670-05:00 200975 201025 
+0

うわー、これは私が思ったよりもはるかに簡単でした!どうもありがとうございました!!! – sos

関連する問題