基于行数据规范化数据
Normalizing data based on row data
我有一个带有 ID 和月份的 pandas df,我想做的是在 ID/Month 首次出现在数据集中时用数字标记它
ID Month Number
123 201501 1
123 201502 2
123 201503 3
234 201502 1
234 201503 2
455 201503 1
正如您所见,ID 123
每个月都会在数据集中出现多次。此外,ID 234
仅出现在月 201502
之后。我想做的是在激活时用数字标记行。
能请教一下吗?
不确定出了什么问题,但这是我从您提供的公式中得到的输出:
ID Month Num
12 201510 1
12 201511 17
12 201512 2
12 201601 3
12 201602 4
12 201603 5
12 201604 6
12 201605 7
12 201606 8
12 201607 9
12 201608 10
12 201609 11
12 201610 12
12 201611 13
12 201612 14
12 201701 15
12 201702 16
看来你可以使用 cumcount
:
df = df.sort_values(['ID', 'Month']).reset_index()
df['num'] = df.groupby('ID').cumcount() + 1
print (df)
ID Month Number num
0 123 201501 1 1
1 123 201502 2 2
2 123 201503 3 3
3 234 201502 1 1
4 234 201503 2 2
5 455 201503 1 1
我有一个带有 ID 和月份的 pandas df,我想做的是在 ID/Month 首次出现在数据集中时用数字标记它
ID Month Number
123 201501 1
123 201502 2
123 201503 3
234 201502 1
234 201503 2
455 201503 1
正如您所见,ID 123
每个月都会在数据集中出现多次。此外,ID 234
仅出现在月 201502
之后。我想做的是在激活时用数字标记行。
能请教一下吗?
不确定出了什么问题,但这是我从您提供的公式中得到的输出:
ID Month Num
12 201510 1
12 201511 17
12 201512 2
12 201601 3
12 201602 4
12 201603 5
12 201604 6
12 201605 7
12 201606 8
12 201607 9
12 201608 10
12 201609 11
12 201610 12
12 201611 13
12 201612 14
12 201701 15
12 201702 16
看来你可以使用 cumcount
:
df = df.sort_values(['ID', 'Month']).reset_index()
df['num'] = df.groupby('ID').cumcount() + 1
print (df)
ID Month Number num
0 123 201501 1 1
1 123 201502 2 2
2 123 201503 3 3
3 234 201502 1 1
4 234 201503 2 2
5 455 201503 1 1