Pandas 当每个组中的所有行都相同时,为分组数据帧中的每个条目生成行号

Pandas 当每个组中的所有行都相同时,为分组数据帧中的每个条目生成行号,pandas,numpy,Pandas,Numpy,我有一个数据框: Test = pd.DataFrame([['US','CA', 'Los Angles', 10], ['US','IL', 'Springfield', 20]], columns = ['country', 'state', 'city', 'counter']) 我想重复计数器中每行的次数,因此我使用numpy pet = pd.DataFrame(np.repeat(Test.values, Test['counter'].values, axi

我有一个数据框:

Test = pd.DataFrame([['US','CA', 'Los Angles', 10], ['US','IL', 'Springfield', 20]], 
         columns = ['country', 'state', 'city', 'counter'])
我想重复计数器中每行的次数,因此我使用
numpy

pet = pd.DataFrame(np.repeat(Test.values, Test['counter'].values, axis = 0), columns = Test.columns)
现在如何向每个组添加行号? 因此,它应该在洛杉矶运行
0到9
,在斯普林菲尔德运行
0到19

Result = pet.groupby(['country', 'state', 'city'])
Result['row_number'] = ??
我尝试了分组方式,并看到了使用rank的示例,但鉴于我的所有行都相同,我认为这不起作用?

您需要:

你需要:

pet['row_number'] = pet.groupby(['country', 'state', 'city']).cumcount()
print (pet) 
   country state         city counter  row_number
0       US    CA   Los Angles      10           0
1       US    CA   Los Angles      10           1
2       US    CA   Los Angles      10           2
3       US    CA   Los Angles      10           3
4       US    CA   Los Angles      10           4
5       US    CA   Los Angles      10           5
6       US    CA   Los Angles      10           6
7       US    CA   Los Angles      10           7
8       US    CA   Los Angles      10           8
9       US    CA   Los Angles      10           9
10      US    IL  Springfield      20           0
11      US    IL  Springfield      20           1
12      US    IL  Springfield      20           2
13      US    IL  Springfield      20           3
14      US    IL  Springfield      20           4
15      US    IL  Springfield      20           5
16      US    IL  Springfield      20           6
17      US    IL  Springfield      20           7
18      US    IL  Springfield      20           8
19      US    IL  Springfield      20           9
20      US    IL  Springfield      20          10
21      US    IL  Springfield      20          11
22      US    IL  Springfield      20          12
23      US    IL  Springfield      20          13
24      US    IL  Springfield      20          14
25      US    IL  Springfield      20          15
26      US    IL  Springfield      20          16
27      US    IL  Springfield      20          17
28      US    IL  Springfield      20          18
29      US    IL  Springfield      20          19