首页 > 解决方案 > 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 相加。我想保留所有新的传入数据,除非它是聚合的(即通过道路探测器的汽车数量),在这种情况下我想将它们加在一起。

标签: pythonpandas

解决方案


经过更多挖掘后,我找到了解决方案。

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聚合选项来获取最新数据,然后对必要的行求和。


推荐阅读