2017-11-03 4 views
1

私は、パンダと.resample( 'M')メソッドを使用して月に1分のデータをリサンプリングしています。返されたサマリサマリーで関連する属性 'シンボル'を生成する方法を探しています。パンダ返信するアトリビュートと.resample()

EX-

#1 MO 
month_summary = pd.DataFrame()  
month_summary['open'] = df.open.resample('M').first().ffill()  
month_summary.head() 

戻り

date  open 
2017-06-30 124.989 

どのようにしても、対応する1次回()レコードとasscciated属性のシンボル」を含みません。

私はこれを返すために

#1 MO 
month_summary = pd.DataFrame() 
month_summary['symbol'] = df.symbol 
month_summary['open'] = df.open.resample('M').first().ffill() 
month_summary['closed'] = df.closed.resample('M').last().ffill()  

month_summary.head() 

...のようなものを探しています。

date  symbol open  close 
2017-06-30 EURJPY 124.989 124.282 

私は何が欠けていますか?

+1

サンプルデータ – DJK

+0

はここでは間違ったことですか?各シンボルの最初のものをお望みですか? @AndyHayden。 –

+0

。特に集計されたmoの最初のオープン値だけでなく、返されたオープン値に関連付けられたシンボルも返します。 –

答えて

1

あなたは、各シンボルと月のための最初のレコードを取得することができます。

df.groupby([pd.Grouper(freq="M"), "symbol"]).agg({"open": "first", "close": "last"}) 

注:あなたはあまりにも記号によってグループ化されている場合のみ理にかなってffill、そうでなければ、1つのシンボルで充填される可能性があります前の(異なるシンボル)で値を開きます。


注:、あなたはその後、例えば後の列をフィルタリングすることができます(列に言及せず)

df.resample('M').first() 

:あなただけのデータフレームGROUPBYに1次回使用して全体の最初の行を取得することができます

df.resample('M').first()[["open", "symbol"]] 

df.resample('M').last()[["closed", "symbol"]] 
+0

明確にするために、私はシンボルに関係なく最初のオープン値を探しています。その後、.first()に関連付けられているシンボルを返します。 –

+0

@NoahHuntingtonそれはラインの下の答えの一部です –

+0

私はこれが無意味であるという点で私の答えがあると思います。私はNaN値を避ける必要があります。私はまた、 'close' .last()の値を返しています。私はこのポストのためにそれを簡単に保つようにした。時系列で見つかったオープンな価値は、必ずしも近い価値と同じシンボルを共有しているわけではないことが明らかになった。私はこれを反映する質問を更新しました。 –

関連する問題