2017-04-17 21 views
0

我有一個pandas數據幀有兩列datevalue(3K不同的日期,800K總行)Python的數據幀進行分組條件均值

我想來計算日期分組的平均值,但只在值最低的十分之一。

我一直在使用DCL = df['date','value'].groupby(['date'])['value'].quantile(.1)嘗試過,這讓我對底部等分的cutoff值,對於每一日期,我怎麼可以創建一個條件平均每個日期,以便它僅使用值低於DCL(每日期)?

DCL = df['date','value'].groupby(['date'])['value'].quantile(.1) 
... 
2017-01-26 0.067924 
2017-01-27 0.067719 
2017-01-30 0.068561 
2017-01-31 0.068056 
2017-02-01 0.067988 
2017-02-02 0.068306 
2017-02-03 0.068311 
2017-02-06 0.067923 
2017-02-07 0.067192 
2017-02-08 0.066902 
2017-02-09 0.065978 
2017-02-10 0.065414 
2017-02-13 0.065402 
2017-02-14 0.065939 
2017-02-15 0.065519 

截止是每一天不同的,我會再像計算你每天只使用比截止該日低該日期的數字組合「價值」的平均值。

回答

1

考慮使用transform爲當前行日期的十進制均值添加新列。

df['DCL'] = df[['date','value']].groupby(['date'])['value'].\ 
       transform(lambda g: g[g <= g.quantile(.1)].mean())