簡體   English   中英

Pandas 給定公共列的兩個不同大小的數據框之間的算術

[英]Pandas arthmetic between two different sized dataframes given common columns

東風1

| ColA     | Colb           | Stock    | Date       |
| -------- | -------------- | -------- | ---------- |
| A        | 1              | 3        | 2022-26-12 |
| B        | 2              | 3        | 2022-26-12 |
| C        | 3              | 3        | 2022-26-12 |

東風2

| ColA     | Colb           | Sales    | Date       |
| -------- | -------------- | -------- | ---------- |
| A        | 1              | 1        | 2022-26-12 |
| B        | 2              | 1        | 2022-26-12 |
| C        | 3              | 1        | 2022-26-12 |

給定任意數量的列加入,你如何在 pandas 中進行 Dataframe 算術,例如,如果我想減去上面的兩個數據幀得到這樣的東西

當天結束時的庫存

| ColA     | Colb           | Stock    | Date       |
| -------- | -------------- | -------- | ---------- |
| A        | 1              | 2        | 2022-26-12 |
| B        | 2              | 2        | 2022-26-12 |
| C        | 3              | 2        | 2022-26-12 |

所以 stock - sales 給定所有公共列,在這種情況下

編輯:(因為我被告知)如果我的 SQL 是正確的,那么 SQL 相當於我在這種情況下想要的東西:

SELECT
    DF1.ColA,
    DF1.Colb,
    DF1.Date,
    DF1.Stock - coalesce(DF2.Sales, 0)
FROM
    DF1
    LEFT JOIN DF2
        on
            DF1.ColA = DF2.ColA and
            DF1.Colb = DF2.Colb and
            DF1.Date = DF2.Date

如果它們的行數和列數相同,則執行類似的操作:

df3 = df1[['ColA', 'Colb','Date']]
df3['Stock'] = df1.Stock - df2.Sales

但是,如果它們不同,請合並它們,然后執行您想要的操作:

df3= pd.merge(df1, df2, on='ColA', how='inner')
df3['Stock'] = df3.Stock - df3.Sales

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM