Python 按输出转换为数据帧问题分组

Python 按输出转换为数据帧问题分组,python,pandas,merge,pivot-table,pandas-groupby,Python,Pandas,Merge,Pivot Table,Pandas Groupby,因此,我不确定我是否采取了最好的方法来解决这个问题,但这就是我目前所拥有的: 这是我正在使用的df: calls.head() id user_id call_date duration 0 1000_93 1000 2018-12-27 9.0 1 1000_145 1000 2018-12-27 14.0 2 1000_247 1000 2018-12-27 15.0 3 1000_309 1000 2018-1

因此,我不确定我是否采取了最好的方法来解决这个问题,但这就是我目前所拥有的: 这是我正在使用的df:

calls.head()

id  user_id call_date   duration
0   1000_93     1000    2018-12-27  9.0
1   1000_145    1000    2018-12-27  14.0
2   1000_247    1000    2018-12-27  15.0
3   1000_309    1000    2018-12-28  6.0
4   1000_380    1000    2018-12-30  5.0
我试图找出如何创建一个数据框,告诉我一个用户在一个月内打了多少次电话。这是我用来生成的代码:

calls_per_month = calls.groupby(['user_id',calls['call_date'].dt.month])['call_date'].count()
calls_per_month.head(10)
user_id  call_date
1000     12            16
1001     8             27
         9             49
         10            65
         11            64
         12            56
1002     10            11
         11            55
         12            47
1003     12           149
Name: call_date, dtype: int64

现在,问题是我需要使用其他数据帧的user_id属性进行进一步的计算,所以我需要能够访问我在这个表中计算的总数。然而,我创建的表似乎不是数据帧,这不允许我这样做。这是我尝试过的解决方案:

calls_per_month = calls.groupby(['user_id',calls['call_date'].dt.month])['call_date'].count().reset_index()
#(calls_per_month.to_frame()).columns = ['user_id','date','total_calls']
calls_per_month.columns = ['user_id','date','total_calls']
(我试过使用和不使用to_框架) 但我得到了以下错误: 无法插入通话日期,已存在

请建议解决这个问题的最佳方法。考虑到我有其他具有用户id和属性(如“使用的数据”)的数据帧,我如何制作此数据帧,以便我可以为每个用户id进行计算,如total_use=calls['total_calls']*internet['data_used]


谢谢。

使用
重命名
更改级别名称,以便正确工作:

calls_per_month = (calls.groupby(['user_id',
                                  calls['call_date'].dt.month.rename('month')])['call_date']
                        .count()
                        .reset_index())

非常感谢。我想这解决了我的问题。需要看看这个解决方案如何与我的进一步计算一起工作。