построение фрейма данных из сгруппированных данных в pandas

#python #pandas #dictionary #dataframe

#python #pandas #словарь #фрейм данных

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом:

             x1     x2    .....      sig
 Index
   0        2      4     .....       B
   1        5      3     .....       A
   .        .      .                 .
   .        .      .     .....       .
  

sig получает только значения A и B. x их может быть столько, сколько вам нравится. тогда мне group и average нравится это (также поверх всех x ):

 v1 = df.groupby('sig')['x1'].mean()
v2 = df.groupby('Sig')['x2'].mean()
...
  

затем я хочу создать фрейм данных с means в x столбцах:

  d = {'x1': v1, 'x2': v2, ....}
 df = pd.DataFrame(d)
  

в итоге это должно выглядеть так:

      x1   x2 ........
sig
 A    3    2  ........
 B    5    3  ........ 
  

мой вопрос: как я могу создать этот фрейм данных в конце, учитывая тот факт, что число x может стать довольно большим? таким образом, это означает цикл по столбцам и расширение словаря, который используется для фрейма данных (словарное решение не обязательно).

Комментарии:

1. это должно быть df.groupby('sig').mean()

2. да, это верно. это решает проблему. Спасибо, @piRSquard. Но на самом деле мне все равно было бы интересно узнать, как построить цикл и расширить фрейм данных / словарь…

3. Я бы d = {c: df.groupby('sig')[c].mean() for c in df}

4. попытался применить это к реальным данным и привел к ошибке DataError: числовые типы для агрегирования отсутствуют

5. ах да, я забыл о ‘sig’. Я бы d = {c: df.groupby('sig')[c].mean() for c in df.drop('sig', 1)}