如何解决group_by输出转换为数据帧问题
因此,我不确定是否要采用最佳方法来解决此问题,但这是到目前为止的结果: 这是我正在使用的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','total_calls']
(我尝试使用to_frame和不使用to_frame) 但是我遇到了以下错误: 无法插入call_date,已经存在
请提出解决此问题的最佳方法。考虑到我还有其他带有user_id和属性(如“使用的数据”)的数据框,如何制作此数据框,以便可以对每个user_id进行诸如total_use = calls ['total_calls'] * internet ['data_used]之类的计算?
谢谢。
解决方法
使用rename
作为更改级别名称,以便Series.reset_index
正常工作:
calls_per_month = (calls.groupby(['user_id',calls['call_date'].dt.month.rename('month')])['call_date']
.count()
.reset_index())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。