2017-06-23 51 views
0

行のDatetimeIndex(粒度/頻度は約1時間)、列のMultiIndexでインデックス付けされたTimeSeries(すべての列はfloatにキャストされます)のpandas.DataFrameがあります。シリーズ内にデータが欠落しています(行が欠落していない、頻度が設定されています)。私は月ごとの買収成績(パーセンテージ)を計算したいと思います。パンダのデータ数がありません

def mapMonth(x): 
    return x.replace(day=1, hour=0, minute=0, second=0, microsecond=0) 

c = data.groupby(mapMonth).count() 

上記のコードは、私が欲しいものを無視して値を数えているようです。今、私はこの集計されたDataFrameを期待カウントで除算したいと思います。

n = pd.DataFrame(np.full((data.shape[0],), 1, dtype=float), index=data.index).groupby(groupby.mapMonth).sum() 

私は予想されるデータを月ごとにカウントしますが、この方法は非常に難しいと感じました。 とにかく私が使用してnでDATAFRAME cを分割成功しませんでした:私は、問題は、MultiIndexである疑い

networkkey  RTU               
measurandkey NO2 
sitekey  41B001 41B004 41B006 41B008 41B011 41MEU1 41N043 41R001 41R002 
channelid  280 27  38  55  59  86  103 122 168 
2012-01-01  0 728 728  0 728 732 728 728 728 
2012-02-01  0 679 678  0 680 686 681 681 679 
2012-03-01  0 728 727  0 727 720 726 728 722 
2012-04-01  0 705 698  0 702 710 699 705 701 
2012-05-01  0 728 728  0 726 728 725 724 680 
2012-06-01  0 703 700  0 701 710 705 705 705 
2012-07-01  0 728 728  0 728 657 707 728 728 

       0 
2012-01-01 744.0 
2012-02-01 696.0 
2012-03-01 744.0 
2012-04-01 720.0 
2012-05-01 744.0 
2012-06-01 720.0 
2012-07-01 744.0 
2012-08-01 744.0 
2012-09-01 720.0 
2012-10-01 744.0 
2012-11-01 720.0 
2012-12-01 744.0 

p = c.div(n, axis=0) 

データフレームは次のようになり。とにかく私はこの方法が簡単ではありません。

パンダでこの集計を計算するにはクリーナ/クリーベアはありますか?

答えて

1

最後に、を無視しない関数が見つかりました。NaN。したがって、次のコードは、私が数行で何をしたいかを実行します:

# Group Data: 
g = data.groupby(groupby.mapMonth) 

# Compute Performance 
c = g.count() 
n = g.size() 
d = c.div(n, axis=0) 
+1

問題を解決してくれてありがとう。 :) – Tbaki

+0

@Tbakiようこそ – jlandercy

関連する問題