2017-03-05 126 views
1

比率I有一个数据集象下面这样:分组由大熊猫柱

i_id q_id week_month 
0 1  NaN  27-7 
1 2  NaN  27-7 
2 3  NaN  27-7 
3 4  1.0  27-7 
4 5  2.0  27-7 

欲基本上由可变Week_month组,并获得(q_id/i_id_)的该组的相应比率。就像上面我们就必须像

week_month rate 
27-7   2/5 

因为q_id只有两个有效身份证件和i_id有5所以速度定义为q_id/i_id。

我可以很容易地做到这一点,但我不想为此使用Pandsql。任何熊猫的方式?

回答

1

如果我理解正确,您可以使用applycount,因为count将获得每个组的每列中的非NA值的总数。

df.groupby('week_month').apply(lambda x: x.q_id.count()/x.i_id.count()) 

演示

>>> df.groupby('week_month').apply(lambda x: x.q_id.count()/x.i_id.count()) 

week_month 
27-7 0.4 
dtype: float64 

当然这是不使关于每个组的实际内容除了非NA/NA的有效性的任何假设。

+0

奇怪的是,你得到的输出为float,而我不得不乘以1.0的分子或分母得到浮点数,否则它给0,即使q_id是浮点数 – Baktaawar

+0

@Baktaawar嗯,有趣的是,我想这取决于什么正是你想要做的。 – miradulo