假设我们有以下数据:
ID | Outcome | Date |
---|---|---|
1 | A | 2020-01-01 |
1 | B | 2020-02-01 |
1 | A | 2020-03-01 |
2 | A | 2020-01-01 |
2 | B | 2020-02-01 |
3 | A | 2020-01-01 |
3 | A | 2020-02-01 |
我们想要按照ID和Outcome进行分组,并且在特定Outcome发生后对结果进行编号。例如,在Outcome为“A”发生后,对结果进行编号。我们可以使用以下代码来解决这个问题:
import pandas as pd
# 加载数据
data = pd.read_csv("data.csv")
# 按照ID、Outcome和Date进行排序
data = data.sort_values(['ID', 'Outcome', 'Date'])
# 为每个Outcome分配编号
outcomes = data.groupby(['ID', 'Outcome']).cumcount() + 1
# 将Outcome的编号添加到数据中
data['Outcome'] += outcomes.astype(str).replace('1', '')
运行后,输出的结果如下:
ID | Outcome | Date |
---|---|---|
1 | A | 2020-01-01 |
1 | B | 2020-02-01 |
1 | A1 | 2020-03-01 |
2 | A | 2020-01-01 |
2 | B | 2020-02-01 |
3 | A1 | 2020-01-01 |
3 | A2 | 2020-02-01 |
我们可以看到,对于每个ID和Outcome组合,最早的