如果我只想在组成员数大于1的组上应用该功能,如何在对数据帧进行分组后将其应用于数据框。
e.g
df1 = df.groupyby(['x','y']).count() > 1.apply(f)
f(x) :
do something
其次传递给函数的是什么 - 它是组中的元素还是组本身。
答案 0 :(得分:1)
我认为你需要size
:
df1 = df.groupby(['x','y']).size()
df1[df1 > 1] = df1[df1 > 1].apply(f)
What is the difference between size and count in pandas?
样品:
df = pd.DataFrame({'x':[1,1,3],
'y':[5,5,6],
'C':[7,8,9]})
print (df)
C x y
0 7 1 5
1 8 1 5
2 9 3 6
def f(x) :
return x + 2
df1 = df.groupby(['x','y']).size()
s = df1[df1.COUNT > 1].set_index('x')['y']
print (s)
x
1 5
Name: y, dtype: int64
mask = df.set_index('x')['y'].isin(s).values
print (mask)
[ True True False]
df[mask] = df[mask].apply(f)
print (df)
C x y
0 9 3 7
1 10 3 7
2 9 3 6