[英]Count number of unique rows pandas
我想計算 pandas dataframe 中的唯一行數,並添加一個新行作為 count_index ,如示例所示。 以另一種方式,我想復制重復行的索引。
import pandas as pd
df = {'A': [ 8,8,9,9,9,12,12,13,15,15,15],
'B': [ 1,1,2,2,2,11,11,3,4,4,4],
'C': [ 10,10,20,20,20,101,101,30,40,40,40],
'D': [81,81,92,92,92,121,121,134,150,150,150]}
df = pd.DataFrame(df)
print(df.groupby(['A','B','C','D']).size())
#####################################################
#input
A B C D
8 1 10 81
8 1 10 81
9 2 20 92
9 2 20 92
9 2 20 92
12 11 101 121
12 11 101 121
13 3 30 134
15 4 40 150
15 4 40 150
15 4 40 150
####################################################
#expected output
A B C D Count_index
8 1 10 81 1
8 1 10 81 1
9 2 20 92 2
9 2 20 92 2
9 2 20 92 2
12 11 101 121 3
12 11 101 121 3
13 3 30 134 4
15 4 40 150 5
15 4 40 150 5
15 4 40 150 5
您可以通過計算倒置的.duplicated
的數量來做到這一點。 然后,我們可以使用累積來保持對遇到的唯一行數的持續計數。
df['count_index'] = (~df.duplicated(keep="first")).cumsum()
print(df)
A B C D count_index
0 8 1 10 81 1
1 8 1 10 81 1
2 9 2 20 92 2
3 9 2 20 92 2
4 9 2 20 92 2
5 12 11 101 121 3
6 12 11 101 121 3
7 13 3 30 134 4
8 15 4 40 150 5
9 15 4 40 150 5
10 15 4 40 150 5
您可以使用diff().ne(0)
或df.ne(df.shift())
的組合
df.diff().ne(0).all(axis=1).cumsum()
或者
df.ne(df.shift()).all(axis=1).cumsum()
Output:
0 1
1 1
2 2
3 2
4 2
5 3
6 3
7 4
8 5
9 5
10 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.