我有一個資料框架,它是按CLIENT_ID和ENCOUNTER_DATE排序的,如下所示:
| CLIENT_ID | 。ENCOUNTER_DATE | STAGE | |
|---|---|---|---|
| 8222 | 2020-01-01 | 2020-01-01 | 1 |
| 8222? | 2020-03-02 | 2020-03-02 | 1 |
| 8222 | |||
| 8222 | 2020-04-18 | 2020年4月18日 | 2 |
| 8222 | |||
| 8222 | 2020-07-31 | 2020-07-31 | 1 |
| 8300 | |||
| 8300 | 2017-06-10 | 2017年6月10日 | 1 |
| 8300 | |||
| 8300 | 2017-09-11 | 2017年9月11日 | 2 |
| 8300 | |||
| 8300 | 2018-02-01 | 2018-02-01 | 2 |
| 8300 | |||
| 8300 | 2018-04-01 | 2018年4月1日 | 3 |
| 8300 | |||
| 8300 | 2018-05-31 | 2018年5月31日 | 4 |
| 8400 | |||
| 8400 | 2020-12-31 | 2020年12月31日 | 1 |
| 8401? | 2017-08-29 | 2017年8月29日 | 1 |
| 8401 | 2017-09-15 | 2017年9月15日 | 3 |
| 8500 | 2018-10-10 | 2018年10月10日 | 2 |
我怎樣才能創建一個新的列(標志列),指示每個CLIENT_ID的前一個DATE_ENCOUNTER的STAGE是否大于當前的DATE_ENCOUNTER,這將導致下面的表格:
| CLIENT_ID | ENCOUNTER_DATE | STAGE | STAGE_WORSENED | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 8222 | 2020-01-01 | 2020-01-01 | 1 | 1 | 0 | 8222 | |||
| 8222 | 2020-03-02 | 2020-03-02> | 1 | 1 | 0 | 8222 | |||
| 8222 | 2020-04-18 | 2020年4月18日 | 2 | 2 | 1 | 8222 | |||
| 8222 | 2020-07-31 | 2020-07-31 | 1 | 1 | 0 | 8300 | |||
| 8300 | 2017-06-10 | 2017年6月10日 | 1 | 0 | |||||
| 8300 | |||||||||
| 8300 | 2017-09-11 | 2017年9月11日 | 2 | 1 | |||||
| 8300 | |||||||||
| 8300 | 2018-02-01 | 2018-02-01 | 2 | 2 | 0 | 8300 | |||
| 8300 | 2018-04-01 | 2018年4月1日 | 3 | 1 | 8300 | ||||
| 8300 | 2018-05-31 | 2018年5月31日 | 4 | 1 | 8400 | ||||
| 8400 | 2020-12-31 | 2020年12月31日 | 1 | 0 | 8401 | 2017-08-29 | 2017年8月29日 | 1 | 0 |
| 8401 | 2017-09-15 | 2017年9月15日 | 3 | 3 | 1 | ||||
| 8500 | |||||||||
| 8500 | 2018-10-10 | 2018年10月10日 | 2 | 2 | 0 |
這里是生成df的代碼:
df = pd. DataFrame({"CLIENT_ID"/span>: [8222, 8222, 8222, 8222, 8300, 8300, 8300, 8300, 8300, 8400, 8401, 8401, 8500】。]
"ENCOUNTER_DATE"。['2020-01-01'/span>, '2020-03-02'/span>, '2020-04-18'/span>, '2020-07-31', '2017-06-10', '2017-09-11', '2018-02-01', '2018-04-01', '2018-05-31', '2020-12-31', '2017-08-29', '2017-09-15', '2018-10-10'] 。
"STAGE": [1, 1, 2, 1, 1, 2, 2, 3, 4, 1, 1, 3, 2]})
uj5u.com熱心網友回復:
使用DataFrameGroupBy.diff,用1來比較大于或等于,并投給整數:
df['STAGE_WORSENED'] = df. groupby('CLIENT_ID')['STAGE'].diff().ge(1) .astype(int)
print (df)
client_id encounter_date stage stage_worsened
0 8222 2020 01-01 1 0
1 8222 2020 03-02 1 0
2 8222 2020-04-18 2 1
3 8222 2020-07-31 1 0
4 8300 2017-06-10 1 0
5 8300 2017-09-11 2 1
6 8300 201802-01 2 0
7 8300 201804-01 3 1
8 8300 201805-31 4 1
9 8400 2020-12-31 1 0
10 8401 2017-08-29 1 0
11 8401 2017-09-15 3 1
12 8500 2018-10-10 2 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306624.html
標籤:
