94240


2つのデータを結合して、重複するデータがあれば合算したい。

[code]

    # データ1
    df1 = pd.DataFrame({"送信元IP": [1.1.1.1, 3.3.3.3, 5.5.5.5], 
                        "宛先IP": [2.2.2.2, 4.4.4.4, 6.6.6.6], 
                        "宛先ポート": [53, 55, 22],
                        "合計":[1,1,1]})
    # データ2
    df2 = pd.DataFrame({"送信元IP": [1.1.1.1, 3.3.3.3, 5.5.5.5], 
                        "宛先IP": [2.2.2.2, 4.4.4.4, 6.6.6.6], 
                        "宛先ポート": [53, 55, 22],
                        "合計":[1,1,1]})
    
[/code]

### これまでに試したこと

Concatを使ってdf1とdf2を結合した後、以下のコードで合計欄を結合後の値になるようにしました。

[code]

    df3=pd.concat(["df1","df2",ignore_index=True)
    dfx = df3.groupby(df.columns.tolist(), as_index=False).size().rename({'size': '合計'}, axis=1)
    print(dfx)
    
[/code]

理想としては、2つのデータを結合した際に重複する値に関しては、合計欄が合算した値になるようにしたいです。


CC BY-SA 4.0
2023-03-18T16:59:04.073
94238
2023-03-19T04:28:12.247
2023-03-19T04:28:12.247
3060
57568
question
python pandas
データの結合と合算

[code]

    import pandas as pd
    
    df1 = pd.DataFrame({
        "送信元IP": ['1.1.1.1', '3.3.3.3', '5.5.5.5'],
        "宛先IP": ['2.2.2.2', '4.4.4.4', '6.6.6.6'],
        "宛先ポート": [53, 55, 22],
        "合計":[1,1,1]
    })
    
    df2 = pd.DataFrame({
        "送信元IP": ['1.1.1.1', '3.3.3.3', '5.5.5.5'],
        "宛先IP": ['2.2.2.2', '4.4.4.4', '6.6.6.6'],
        "宛先ポート": [53, 55, 22],
        "合計":[1,1,1]})
    
    df3 = pd.concat([df1, df2])
    dfx = df3.groupby(df3.columns.tolist(), as_index=False).size()\
             .drop('合計', axis=1).rename({'size': '合計'}, axis=1)
    print(dfx)
    
[/code]

送信元IP | 宛先IP | 宛先ポート | 合計  
---|---|---|---  
1.1.1.1 | 2.2.2.2 | 53 | 2  
3.3.3.3 | 4.4.4.4 | 55 | 2  
5.5.5.5 | 6.6.6.6 | 22 | 2


CC BY-SA 4.0
2023-03-18T21:26:33.387
94240
2023-03-18T21:26:33.387
47127
94238
answer