2013-12-11 5 views
1

Как мы можем применить функцию к целой группе в pandas dataframe в python? Это код, который я до сих пор:Как применить функцию к целой группе в pandas и python?

df_grouped = df.groupby(['key1', 'key2']) 
result_with_bla = df_grouped.magic_apply(myfunc) 

В основном я хочу функцию magic_apply, которая вызывает MyFunc на каждой подгруппе из df_grouped, а не на каждой строке. Это существует?

+0

Не могли бы вы уточнить, как 'magic_apply' будет отличаться от' apply'? Может быть, привести пример 'myfunc'? – DSM

ответ

1

Как @DSM указывает, что «магическое применение» просто называется ... apply. Это метод GroupBy:

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B']) 

In [12]: g = df.groupby(['A']) 

In [13]: def f(x): 
      print(x) 
      return len(x) 

In [14]: g.apply(f) 
    A B 
0 1 2 
1 1 4 

    A B 
0 1 2 
1 1 4 

    A B 
2 5 6 
Out[14]: 
A 
1 2 
5 1 
dtype: int64 

Примечание: Смутно, е применяется 3 раза, даже если есть только две группы - это потому, что панды необходимо определить тип возвращаемого значения.

Смежные вопросы