我在python中有一个数据框,我在下面的一列中做一个groupbyagg。在此agg中,我将count除以specified number。现在,我想传递一个随机数以除以计数值。

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


我想要这样的东西

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


我们能做到吗?

最佳答案

我相信需要:

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之间的数字,以避免通过0除以inf(然后得到numpy.random.randint):

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

关于python - 将随机变量传递给agg函数python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50590354/

10-12 20:11