我有一張如下表,想根據條件填寫同類別的Stage
if Stage = "Delivered" then fill down "Delivered" to all the next rows else if Stage = "Paid" then fill down "Paid" to all the next rows
| 類別 | 日期 | 階段 |
|---|---|---|
| 一個 | 2021-11-01 | 已訂購 |
| 一個 | 2021-12-01 | 有薪酬的 |
| 一個 | 2022-01-01 | |
| 乙 | 2021-08-01 | |
| 乙 | 2021-09-01 | 已訂購 |
| 乙 | 2021-10-01 | 有薪酬的 |
| 乙 | 2021-11-01 | 已訂購 |
| 乙 | 2021-12-01 | 發表 |
結果應如下所示:
| 類別 | 日期 | 階段 |
|---|---|---|
| 一個 | 2021-11-01 | 已訂購 |
| 一個 | 2021-12-01 | 有薪酬的 |
| 一個 | 2022-01-01 | 有薪酬的 |
| 乙 | 2021-08-01 | |
| 乙 | 2021-09-01 | 已訂購 |
| 乙 | 2021-10-01 | 有薪酬的 |
| 乙 | 2021-11-01 | 有薪酬的 |
| 乙 | 2021-12-01 | 發表 |
有人可以幫忙嗎?我真的很感激!
uj5u.com熱心網友回復:
您可以使用mask和combine_first:
假設您的資料框已經按Date列排序。
df['Stage'] = df['Stage'].mask(~df['Stage'].isin(['Paid', 'Delivered'])) \
.groupby(df['Category']).ffill() \
.combine_first(df['Stage'])
print(df)
# Output
Category Date Stage
0 A 2021-11-01 Ordered
1 A 2021-12-01 Paid
2 A 2022-01-01 Paid
3 B 2021-08-01
4 B 2021-09-01 Ordered
5 B 2021-10-01 Paid
6 B 2021-11-01 Paid
7 B 2021-12-01 Delivered
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409081.html
標籤:
