Python 将一个数据帧保存在另一个数据帧中
我有个棘手的案子。我的头绕不过去 我有一个熊猫数据框,如下所示:Python 将一个数据帧保存在另一个数据帧中,python,python-3.x,pandas,dataframe,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,
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
stat_101 level_101 avg_104
0 31937667515 1 27305.34552
1 47594388534 2 44783.49401
2 43568256234 2 22990.77442
我想在'group\u id\u 101'、'stat\u 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\u obj
将是另一个数据帧,其行如下所示:
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
stat_101 level_101 avg_104
0 31937667515 1 27305.34552
1 47594388534 2 44783.49401
2 43568256234 2 22990.77442
最好的方法是什么?我应该在另一个数据帧中保存一个数据帧,还是有更干净的方法
希望我的问题很清楚。让我们试试看
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”是一列可通过索引访问的数据帧
强制性免责声明:这是对数据帧的公然滥用,您通常不应该存储无法利用熊猫矢量化的对象。如何将两列设置为索引:
m=df.set_index(['group_id_101','stat_102'])
,然后您可以通过访问索引来访问组:m.loc[(1,”00005@60-78")]
?这能满足您的需求吗?您确实可以通过将数据帧作为元素传递来嵌套数据帧。但是你应该重新考虑你的设计,因为它太复杂了。在我看来,将一个数据帧保存到另一个数据帧的条目中似乎不是一个好主意(我在数据帧中使用过字典,这并不有趣)。例如,您将无法将其保存为CSV文件。那么数据帧列表呢?谢谢你的回答。如何从生成的数据帧中访问new_avg
列?@MayankPorwal与loc或at一起使用,就像任何普通单元格一样。