我在python
中有一个数据框,我在下面的一列中做一个groupby
和agg
。在此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
groupby
和agg
的解决方案: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/