簡體   English   中英

如何使用 Pandas 根據另一列的值將兩列相加

[英]How to sum two columns together based on another column's value using Pandas

我想使用 Pandas 重現“desired_outcome”列。 基本上每次“Acc 類型”等於 O 時,我都必須取余額和金額的總和。

+--------+----------+-------+---------+--------+----------+-----------------+
| MainID |   Date   | SubID | Balance | Amount | Acc Type | desired_outcome |
+--------+----------+-------+---------+--------+----------+-----------------+
|      1 | 1/1/2020 |     1 |      10 | 5      | O        |              15 |
|      1 | 1/1/2020 |     1 |      10 | 4      | R        |              10 |
|      1 | 1/1/2020 |     2 |      20 | 5      | O        |              25 |
|      1 | 1/1/2020 |     2 |      20 | 4      | R        |              20 |
|      1 | 1/1/2020 |     3 |      30 | 5      | O        |              35 |
|      1 | 1/1/2020 |     3 |      30 | 4      | R        |              30 |
|      1 | 2/1/2020 |     1 |      40 | 5      | O        |              45 |
|      1 | 2/1/2020 |     1 |      40 | 4      | R        |              40 |
|      1 | 2/1/2020 |     2 |      50 | 5      | O        |              55 |
|      1 | 2/1/2020 |     2 |      50 | 4      | R        |              50 |
|      1 | 2/1/2020 |     3 |      60 | 5      | O        |              65 |
|      1 | 2/1/2020 |     3 |      60 | 4      | R        |              60 |
|      2 | 1/1/2020 |     7 |     100 | NaN    | O        |             100 |
|      2 | 1/1/2020 |     7 |     100 | NaN    | R        |             100 |
+--------+----------+-------+---------+--------+----------+-----------------+

另外,我知道這不是理想的數據幀,理想的方法可能是擁有兩個數據幀。 我如何將它設置在我有第二個數據幀的位置,如下所示:並且仍然能夠像上面那樣具有所需的輸出列(沒有額外的行,因為 acc 類型將不再存在)

+--------+----------+------------+----------+
| MainID |   Date   | Acc Amount | Acc Type |
+--------+----------+------------+----------+
|      1 | 1/1/2020 | 5          | O        |
|      1 | 1/1/2020 | 4          | R        |
|      1 | 2/1/2020 | 5          | O        |
|      1 | 2/1/2020 | 4          | R        |
|      2 | 1/1/2020 | NaN        | O        |
|      2 | 1/1/2020 | NaN        | R        |
+--------+----------+------------+----------+

謝謝!

你的數據框就好了。 這是我會做的:

df['desired_outcome'] = np.where(df['Acc Type']=='O', 
                                 df['Balance'] + df['Amount'].fillna(0),
                                 df['Balance'])

輸出:

    MainID      Date  SubID  Balance  Amount Acc Type  desired_outcome
0        1  1/1/2020      1       10     5.0        O             15.0
1        1  1/1/2020      1       10     4.0        R             10.0
2        1  1/1/2020      2       20     5.0        O             25.0
3        1  1/1/2020      2       20     4.0        R             20.0
4        1  1/1/2020      3       30     5.0        O             35.0
5        1  1/1/2020      3       30     4.0        R             30.0
6        1  2/1/2020      1       40     5.0        O             45.0
7        1  2/1/2020      1       40     4.0        R             40.0
8        1  2/1/2020      2       50     5.0        O             55.0
9        1  2/1/2020      2       50     4.0        R             50.0
10       1  2/1/2020      3       60     5.0        O             65.0
11       1  2/1/2020      3       60     4.0        R             60.0
12       2  1/1/2020      7      100     NaN        O            100.0
13       2  1/1/2020      7      100     NaN        R            100.0

暫無
暫無

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

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