グループ名で何を指しているのかよくわかりません。グループ化している列の値を意味しますか?
Apply は、データフレームを groupby 列によって複数の小さなデータフレームに分割します。グループ化する列は、まだ小さいデータフレーム内にあります。それはあなたが求めているものですか?
例として:
サンプルデータ:
np.random.seed(1)
n=10
df = pd.DataFrame({'mygroups' : np.random.choice(['dogs','cats','cows','chickens'], size=n),
'mygroups2' : np.random.choice(['dogs','cats','cows','chickens'], size=n),
'data' : np.random.randint(1000, size=n)})
print df.head()
data mygroups mygroups2
0 254 cats dogs
1 357 chickens cats
2 914 dogs dogs
3 468 dogs chickens
4 907 chickens cats
それをグループ化して、愚かな関数を作りましょう:
gb = df.groupby(['mygroups','mygroups2'])
def someFunction(ingroup):
print ingroup
return ""
gb.apply(someFunction)
data mygroups mygroups2
7 668 cats cats
data mygroups mygroups2
7 668 cats cats
data mygroups mygroups2
0 254 cats dogs
5 252 cats dogs
data mygroups mygroups2
1 357 chickens cats
4 907 chickens cats
data mygroups mygroups2
6 490 chickens cows
8 925 chickens cows
data mygroups mygroups2
3 468 dogs chickens
data mygroups mygroups2
2 914 dogs dogs
9 398 dogs dogs
Out[718]:
mygroups mygroups2
cats cats
dogs
chickens cats
cows
dogs chickens
dogs
dtype: object
結果の印刷出力で、の各反復がapply
入力データフレームのすべての列を取得することがわかります。
編集:
からキーのタプルを取得する方法がわかりませんapply
が、ループから取得できます。
for eachgroup in gb:
print 'this group key = ' + str( eachgroup[0] )
print 'this group values = '
print eachgroup[1]