我想計算 dataframe2 中的記錄數并將計數添加到dataframe1中的相應行。
第一個(df1)
| 路 | 路號 | 數數 |
|---|---|---|
| 一個 | 1 | 0 |
| 一個 | 2 | 0 |
| 乙 | 1 | 0 |
| 乙 | 2 | 0 |
第二個(df2)
| 路 | 路號 |
|---|---|
| 一個 | 1 |
| 一個 | 1 |
| 一個 | 1 |
| 一個 | 2 |
| 一個 | 2 |
| 乙 | 1 |
預期的輸出是計算dataframe2中的記錄數,并將該數字添加到 dataframe1 中相應的 Road 和 RoadNo行。
預期輸出:
| 路 | 路號 | 數數 |
|---|---|---|
| 一個 | 1 | 3 |
| 一個 | 2 | 2 |
| 乙 | 1 | 1 |
| 乙 | 2 | 0 |
Pandas 或 Python 中是否有可以幫助我完成此操作的函式?我是否需要在資料庫中創建兩個表并執行 SQL 查詢才能執行此操作?非常感謝!
uj5u.com熱心網友回復:
您可以先計算df2allRoad和RoadNopairs 的值,然后將結果資料框連接到df1:
df1 = pd.DataFrame(data={"Road":["A", "A", "B", "B"], "RoadNo": [1, 2, 1, 2], "Count":[0, 0, 0, 0]})
df2 = pd.DataFrame(data={"Road":["A", "A", "A", "A", "A", "B"], "RoadNo": [1, 1, 1, 2, 2, 1]})
merge_df = df2.value_counts(["Road", "RoadNo"]).reset_index().rename(columns={0: "Count"})
expected_df = pd.merge(left=df1.drop(columns=["Count"]), right=merge_df, on=["Road", "RoadNo"], how="left").fillna(0).astype({"Count": "int32"})
expected_df
---------------------------------
Road RoadNo Count
0 A 1 3
1 A 2 2
2 B 1 1
3 B 2 0
---------------------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494093.html
上一篇:如何根據上一行的條件創建ID列?
