我在python
中有一个数据框我正在其中一个列上执行groupby
和agg
,如下所示。在此agg
中,我将count
除以specified number
。现在我想传递一个随机数来分割计数值。
df.groupby('a').agg(count('a')/3)
我想要像这样的东西
df.groupby('a').agg(count('a')/{}.format(random_number)
我们可以这样做吗?
答案 0 :(得分:2)
我认为需要:
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
除numpy.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