我有一个棘手的案子。不能缠住我的头。
我有一个如下所示的熊猫数据框:
In [3]: df = pd.DataFrame({'stat_101':[31937667515, 47594388534, 43568256234], 'group_id_101':[1,1,1], 'level_101':[1,2,2], 'stat_102':['00005@60-78','00005@60-78','00005@60-78'], 'avg_104':[27305.34552, 44783.49401, 22990.77442]})
In [4]: df
Out[4]:
stat_101 group_id_101 level_101 stat_102 avg_104
0 31937667515 1 1 00005@60-78 27305.34552
1 47594388534 1 2 00005@60-78 44783.49401
2 43568256234 1 2 00005@60-78 22990.77442
我想在'group_id_101','stat_102'
列上对此分组,并创建另一个数据框,该数据框将在其中存储分组数据框的结果。
预期输出:
In [27]: res = pd.DataFrame({'new_stat_101':[1], 'stat_102':['00005@60-78'], 'new_avg':['Dataframe_obj']})
In [28]: res
Out[28]:
new_stat_101 stat_102 new_avg
0 1 00005@60-78 Dataframe_obj
Dataframe_obj
将是另一个数据帧,其行如下所示:
stat_101 level_101 avg_104
0 31937667515 1 27305.34552
1 47594388534 2 44783.49401
2 43568256234 2 22990.77442
做到这一点的最佳方法是什么?我应该将一个数据帧保存在另一个数据帧中,还是有一种更清洁的方法呢?
希望我的问题很清楚。
答案 0 :(得分:1)
让我们尝试
g = ['group_id_101', 'stat_102']
idx, dfs = zip(*df.groupby(g))
pd.DataFrame({'new_avg': dfs}, index=pd.MultiIndex.from_tuples(idx, names=g))
new_avg
group_id_101 stat_102
1 00005@60-78 stat_101 group_id_101 level_101 st...
“ new_avg”是可通过索引访问的DataFrames列。
强制性免责声明:这是对DataFrame的公然滥用,通常不应存储无法利用熊猫矢量化功能的对象。