pandas - 按 Inspector_ID 分组总和,以及熊猫中的 Day
问题描述
我有一个如下所示的数据框。这是两个检查员在不同的日子里走过的距离。
Inspector_ID Timestamp Distance
1 2018-07-24 7:31:00 0
1 2018-07-24 7:31:01 2.3
1 2018-07-24 7:33:01 2.8
1 2018-07-25 7:32:04 0
1 2018-07-25 7:33:06 3.6
2 2018-07-20 8:35:08 0
2 2018-07-20 8:36:10 5.6
2 2018-07-20 8:37:09 2.1
2 2018-07-27 8:38:00 0
2 2018-07-27 8:39:00 3
2 2018-07-27 8:40:00 2.6
从上面,我想准备下面的数据框
预期产出
Inspector_ID Day_of_the_month Total_distance No.of_entries_in that_day week_of_the_month
1 24 5.1 3 4
1 25 3.6 2 4
2 20 7.7 3 3
2 27 5.6 3 4
解决方案
import pandas as pd
from datetime import datetime as dt
df={"Inspector_ID":[1,1,1,1,1,2,2,2,2,2,2] ,"Timestamp" :["2018-07-24 7:31:00" ,"2018-07-24 7:31:01" ,"2018-07-24 7:33:01" ,"2018-07-25 7:32:04" ,"2018-07-25 7:33:06","2018-07-20 7:31:00" ,"2018-07-20 8:36:10" ,"2018-07-20 8:37:09","2018-07-27 8:38:00" ,"2018-07-27 8:39:00","2018-07-27 8:38:00"],"Distance":[0,2.3,2.8,0,3.6,0,5.6,2.1,0,3,2.6]}
df["Day"]=[]
df["week_of_month"]=[]
for entry in df["Timestamp"]:
df["Day"].append(dt.strptime(entry,'%Y-%m-%d %H:%M:%S').day)
df["week_of_month"].append((dt.strptime(entry,'%Y-%m-%d %H:%M:%S').day - 1) // 7 + 1)
df=pd.DataFrame(df)
result=df.groupby(['Inspector_ID','Day','week_of_month'])['Distance'].agg({"totdist":"sum","NoEntries":"count"})
print(result)
推荐阅读
- python - Pandas ParseError“错误标记数据。C 错误:预期第 49 行中的 1 个字段,看到 2”
- amazon-web-services - Is it necessary to allow access between different security groups in VPC on AWS?
- sql - 何时优化包含更新的 SQL 请求?
- r - data.table 具有来自嵌套列表的唯一名称,具有不同的类和缺少名称
- python - 使用网络抓取获取单词的文本/描述
- javascript - 角度乘以表格的一行
- javascript - 仅针对唯一值过滤数组
- firebase - 如何更改 Firebase 存储中的默认存储桶
- c# - 将 C# 函数发布到 AWS lambda 时出现“类型或命名空间不存在”错误
- python-3.x - 如何从另一个python脚本调用包含嵌套字典的函数