Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将一个数据帧保存在另一个数据帧中_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

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一起使用,就像任何普通单元格一样。