将随机变量传递给agg函数python

时间:2018-05-29 18:03:41

标签: python pandas

我在python中有一个数据框我正在其中一个列上执行groupbyagg,如下所示。在此agg中,我将count除以specified number。现在我想传递一个随机数来分割计数值。

 df.groupby('a').agg(count('a')/3)

我想要像这样的东西

 df.groupby('a').agg(count('a')/{}.format(random_number)

我们可以这样做吗?

1 个答案:

答案 0 :(得分:2)

我认为需要:

df['a'].value_counts() / 3

groupbyagg的解决方案:

df.groupby('a').agg({'a': 'count'}) / 3

df.groupby('a').agg({'a': lambda x: x.count() / 3})

df.groupby('a')['a'].agg(lambda x: x.count() / 3)

对于每组的随机数除以1到10之间的数字,而不是0到10之间的数字,以避免0numpy.random.randint之后获得inf}:

df = pd.DataFrame({
    'a': [1,1,1,2,2,3,3,3,3],
    'b': list(range(9))
})
print (df)
   a  b
0  1  0
1  1  1
2  1  2
3  2  3
4  2  4
5  3  5
6  3  6
7  3  7
8  3  8

df1 = df.groupby('a')['a'].agg(lambda x: x.count() / np.random.randint(1, 10))
print (df1)
a
1    0.500000
2    0.285714
3    0.500000
Name: a, dtype: float64