#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)}