2016-10-17 9 views
0

私は取引リストをインポートし、それを合計数量と平均価格でポジションファイルに統合しようとしています。私はティッカー、タイプ、有効期限、ストライキに基づいてグループ化しています。 2つの質問:パンダのデータフレームの出力フォーマット

  1. 出力には、最初の列にインデックスグループ(ティッカー、タイプ、有効期限、ストライク)があります。どのようにして各インデックス列が独自の列に出力され、出力csvが入力データと同じ方法でフォーマットされるようにするには、これを変更できますか?
  2. 現在、セルを空白のままにするとエラーが発生するため、株式取引に値(「1」)が強制されますが、「1」は意味がないため、不良データが追加されます。問題を起こさずに ""保存する方法はありますか?

DATAFRAME:

GM  stock 1   1  32  100 
    AAPL call 201612  120  3.5  1000 
    AAPL call 201612  120  3.25 1000 
    AAPL call 201611  120  2.5  2000 
    AAPL put  201612  115  2.5  500 
    AAPL stock 1   1  117  100 

コード:

import pandas as pd 
    import numpy as np 

    df = pd.read_csv(input_file, index_col=['ticker', 'type', 'expiration', 'strike'], names=['ticker', 'type', 'expiration', 'strike', 'price', 'quantity']) 
    df_output = df.groupy(df.index).agg({'price':np.mean, 'quantity':np.sum}) 
    df_output.to_csv(output_file, sep=',') 

CSV出力この形式で出てくる:

(ticker, type, expiration, strike), price, quantity 

希望の形式:

最初の質問については

答えて

0

あなたは第二のためにGROUPBY(df.index_col)の代わりに、GROUPBY(df.index)

を使用する必要があり、私は「」あなたが保存できなかった理由を確認していない、ということが数値であります?

私は以下のようないくつかのデータをあざけり:check.csvで

import pandas as pd                         
import numpy as np                         

d = [                            
    {'ticker':'A', 'type':'M', 'strike':'','price':32},                
    {'ticker':'B', 'type':'F', 'strike':100,'price':3.5},               
    {'ticker':'C', 'type':'F', 'strike':'', 'price':2.5}                

]                             
df = pd.DataFrame(d)                         
print df                            

#dgroup = df.groupby(['ticker', 'type']).agg({'price':np.mean})              
df.index_col = ['ticker', 'type', 'strike']                   
dgroup = df.groupby(df.index_col).agg({'price':np.mean}) 
#dgroup = df.groupby(df.index).agg({'price':np.mean})             
print dgroup                           
print type(dgroup)                         
dgroup.to_csv('check.csv') 

出力:

ticker,type,strike,price                        
A,M,,32.0                           
B,F,100,3.5                           
C,F,,2.5 
+0

linpigta、感謝します。データにヘッダー行がない場合、コードはどのように変更されますか?データをどのように参照しますか? – DJohnson1990

+0

ヘッダーのないデータはどういう意味ですか?あなたの質問を更新し、いくつかのサンプルデータとあなたの希望の出力をそこに置くことができますか? – linpingta

+0

私はデータを更新しました。入力データファイルにヘッダーがない場合は、どのように列を参照しますか? – DJohnson1990

関連する問題