我有一个DataFrame:
HH PERSON SPOT WEIGHT
1002141 aa 1 1332.25
1011831 ab 1 2083.31
1031726 aa 1 2589.09
1042819 aa 1 4736.28
1043006 aa 1 1588.39
1043006 aa 1 1588.39
1060911 aa 1 1113.97
1001665 aa 2 3202.09
1001762 aa 2 2048.54
我尝试做的是在所有重复出现的事件中创建一个计数列, 在上面的例子中,第5行和第6行是相同的,所以我希望输出为:
HH PERSON SPOT WEIGHT COUNT
1002141 aa 1 1332.25 1
1011831 ab 1 2083.31 1
1031726 aa 1 2589.09 1
1042819 aa 1 4736.28 1
1043006 aa 1 1588.39 2
1060911 aa 1 1113.97 1
1001665 aa 2 3202.09 1
1001762 aa 2 2048.54 1
我做的是:
count_table=df.groupby(['HH','PERSON','SPOT ID']).agg(['count']).reset_index()
它可以工作,但是索引全部搞砸了 - 它通过HH列而不是原始索引对它进行排序。
我有什么想法可以重置表索引?
答案 0 :(得分:1)
您可以使用transform
添加一个计数列,在这种情况下只是组大小:
In [164]:
df['Count'] = df.groupby(['HH','PERSON','SPOT'])['WEIGHT'].transform('size')
df
Out[164]:
HH PERSON SPOT WEIGHT Count
0 1002141 aa 1 1332.25 1
1 1011831 ab 1 2083.31 1
2 1031726 aa 1 2589.09 1
3 1042819 aa 1 4736.28 1
4 1043006 aa 1 1588.39 2
5 1043006 aa 1 1588.39 2
6 1060911 aa 1 1113.97 1
7 1001665 aa 2 3202.09 1
8 1001762 aa 2 2048.54 1