将熊猫数据框保存在另一个数据框内

时间:2020-09-13 14:49:41

标签: python python-3.x pandas dataframe

我有一个棘手的案子。不能缠住我的头。

我有一个如下所示的熊猫数据框:

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

做到这一点的最佳方法是什么?我应该将一个数据帧保存在另一个数据帧中,还是有一种更清洁的方法呢?

希望我的问题很清楚。

1 个答案:

答案 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的公然滥用,通常不应存储无法利用熊猫矢量化功能的对象。

相关问题