python - Python Pandas 在匹配键时对特定列求和
问题描述
我目前正在使用每 30 秒更新一次高速公路探测数据的数据流。数据库中的数据需要汇总传入的数据并提供 15 分钟的总计。我遇到的问题是在匹配键时尝试对特定列求和。
Current_DataFrame:
uuid lane-Number lane-Status lane-Volume lane-Speed lane-Class1Count laneClass2Count
1 1 GOOD 10 55 5 5
1 2 GOOD 5 57 3 2
2 1 GOOD 7 45 4 3
New_Dataframe:
uuid lane-Number lane-Status lane-Volume lane-Speed lane-Class1Count laneClass2Count
1 1 BAD 7 59 6 1
1 2 GOOD 4 64 2 2
2 1 BAD 5 63 3 2
Goal_Dataframe:
uuid lane-Number lane-Status lane-Volume lane-Speed lane-Class1Count laneClass2Count
1 1 BAD 17 59 11 6
1 2 GOOD 9 64 5 4
2 1 BAD 12 63 7 5
目标是匹配 uuid 和 lane-Number 上的数据帧,然后获取 lane-Status 和 lane-Speed 的 New_Dataframe 值,然后将 lane-Volume、lane-Class1Count 和 laneClass2Count 相加。我想保留所有新的传入数据,除非它是聚合的(即通过道路探测器的汽车数量),在这种情况下我想将它们加在一起。
解决方案
经过更多挖掘后,我找到了解决方案。
df = pd.concat(["new_dataframe", "current_dataframe"], ignore_index=True)
df = df.groupby(["uuid", "lane-Number"]).agg(
{
"lane-Status": "first",
"lane-Volume": "sum",
"lane-Speed": "first",
"lane-Class1Count": "sum",
"lane-Class2Count": "sum"
})
通过将 连接 current_dataframe
到后面,new_dataframe
我可以使用first
聚合选项来获取最新数据,然后对必要的行求和。
推荐阅读
- m3u8 - ts文件解密后如何让m3u8文件正常播放
- python - why does my logger not inherit handlers from root logger
- amazon-web-services - AWS ECS CLI Doesn't Attach EC2 Instance To Cluster
- javascript - 从具有 (x,y) 坐标的列表中获取项目
- python - PyGears How to make counter
- java - How to validate Json text which is not having any property name or key?
- google-apps-script - 范围的坐标在工作表的尺寸之外
- mysql - 递归 SELECT 查询
- reactjs - jest +酵素:不更新材料输入值
- swift - 在 Swift 中从 Result 到 Future 的速记转换?