根据行数据标准化数据

时间:2017-03-15 11:16:43

标签: python pandas normalization

我有一个带有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

1 个答案:

答案 0 :(得分:0)

您似乎可以使用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