我有一個資料框架,如下所示:
我有一個資料框架。
| CLIENT_ID | ENCOUNTER_DATE | 條件 | 。|
|---|---|---|---|
| 8222 | 2020-01-01 | 陽性。 | 陽性 |
| 陽性 | |||
| 8222? | 2020-03-02 | 2020-03-02> | 治療 |
| 治療 | |||
| 8222 | |||
| 8222 | 2020-04-18 | 2020年4月18日 | 已處理 |
| 已處理? | |||
| 8222 | |||
| 8222 | 2020-07-31 | 2020-07-31 | 陰性 |
| 陰性 | |||
| 8300 | |||
| 8300 | 2017-06-10 | 2017年6月10日 | 負數 |
| 負數? | |||
| 8300 | |||
| 8300 | 2017-09-11 | 治療 | |
| 治療 | |||
| 8300 | |||
| 8300 | 2018-02-01 | 2018-02-01 | 未來治療 |
| 未來治療 | |||
| 8300 | |||
| 8300 | 2018-04-01 | 2018-04-01 | 已治療 |
| 已治療 | |||
| 8300 | |||
| 8300 | 2018-05-31 | 2018-05-31 | 陰性 |
| 陰性? | |||
| 8400 | |||
| 8400 | 2020-12-31 | 2020年12月31日 | 未來治療 |
| 未來治療 | |||
| 8401? | 2017-08-29 | 陰性 | |
| 陰性。 | |||
| 8401 | 2017-09-15 | 陽性 | |
| 陽性 | |||
| 8500 | 2018-10-10 | 2018年10月10日 | 陽性 |
| 陽性 |
這里是創建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'] 。
"條件"。["positive", "treated", "treated", "陰性", "陰性", "治療", "未來治療"。"治療", "負面", "未來治療"。"負面", "正面", "正面"]})
manage_condition_list = ['positive','treated','future treatment']
該表按CLIENT_ID和DATE_ENCOUNTER排序。
我想獲得該客戶CLIENT_ID在manage_condition_list串列中的CONDITION在該時間點的累積計數(次數)。因此,最終的資料框架或輸出將看起來如下:
CLIENT_ID
ENCOUNTER_DATE
條件 。
第二部分_COUNTS 。
注意真正的資料有明顯更多的條目不在manage_condition_list中。我正在考慮結合df.where和cumcount() 1,但我不太確定。
uj5u.com熱心網友回復:
使用isin來獲得True,如果值在列CONDITION上的manage_condition_list中,然后通過CLIENT_ID列的groupby.cumsum來獲得
df['CODITION_COUNTS'] = (
df['CONDITION'].isin(manage_condition_list)
.groupby(df['CLIENT_ID']) .cumsum()
)
print(df)
client_id encounter_date condition condition_counts
0 8222 202001-01 positive 1
1 8222 2020-03-02 treated 2
2 8222 2020-04-18 治療 3
3 8222 2020-07-31 負面3
4 8300 2017-06-10 負 0
5 8300 2017-09-11 treated 1
6 8300 2018-02-01 未來治療 2
7 8300 2018-04-01 治療 3
8 8300 2018-05-31 負面3
9 8400 2020-12-31 未來治療 1
10 8401 2017-08-29 負面0
11 8401 2017-09-15 正1
12 8500 2018-10-10 正1
uj5u.com熱心網友回復:
不確定我是否理解了cum_counts背后的邏輯,但希望這對我有幫助
。df['Cum_Count']= df.groupby('CLIENT_ID').cumcount('Condition')
df
或者
df['Cum_Count']=df.groupby('CLIENT_ID')['CONDITION'].cumcount()
或者
df['CONDITION_COUNTS'] = (df['CONDITION'] 。 isin(manage_condition_list).groupby(df['CLIENT_ID']).cumcount()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309183.html
標籤:
