У меня есть вопрос относительно панд dataframes:Панды Dataframe GroupBy: двойной GroupBy и применить функцию
У меня есть dataframe вроде следующего,
df = pd.DataFrame([[1,1,10],[1,1,30],[1,2,40],[2,3,50],[2,3,150],[2,4,100]],columns=["a","b","c"])
a b c
0 1 1 10
1 1 1 30
2 1 2 40
3 2 3 50
4 2 3 150
5 2 4 100
И я хочу, чтобы произвести следующий вывод,
a "new col"
0 1 30
1 2 100
, где первая линия рассчитывается как:
- Group DF по первой колонке «а»,
- Затем группы, каждый из сгруппированного объекта «B»
- вычислить среднее значение «с» для этого б-групп
- вычислить средства все би-groupbs для одного «а»
- это окончательное значение сохраняется в «новой седловине» для одного «а»
Я могу себе представить, что это как-то странно, но я надеюсь, что это понятно, тем не менее.
я достиг желаемого результата, но, как мне это нужно для огромного dataframe, мое решение, вероятно, значительно замедлить,
pd.DataFrame([ [a, adata.groupby("b").agg({"c": lambda x:x.mean()}).mean()[0]] for a,adata in df.groupby("a") ],columns=["a","new col"])
a new col
0 1 30.0
1 2 100.0
Поэтому то, что мне нужно что-то вроде (?) ФР. groupby ("a"). groupby ("b") ["c"]. mean()
Спасибо вам большое!