[英]Pandas DataFrame: Find unique words in string column, count their occurrence and sum values in another column on condition
[英]counter of first occurrence of unique values of another column pandas
給定如下所示的示例 df,我想找到val
的所有唯一實例的增量計數器。 我得到的最接近的是df.groupby('val').cumcount()
但顯然這不是我想要的。
df = pd.DataFrame({'val': [100, 101, 104, 104, 106, 108, 108, 108]})
期望的結果:
val ctr
0 100 1
1 101 2
2 104 3
3 104 0
4 106 4
5 108 5
6 108 0
7 108 0
我們可以使用groupby ngroup
來枚舉組 ( sort=False
) 如果想要組枚舉出現在 DataFrame 中的方式,然后mask
duplicated
的值:
s = df.groupby('val', sort=False).ngroup() + 1 # Get unique group number
df['ctr'] = s.mask(s.duplicated(), 0) # Add in the 0s
df
:
val ctr
0 100 1
1 101 2
2 104 3
3 104 0
4 106 4
5 108 5
6 108 0
7 108 0
或者使用pd.factorize
和np.where
將duplicated
值分配給 0:
import numpy as np
m = df['val'].duplicated()
df['ctr'] = np.where(m, 0, pd.factorize(df['val'])[0] + 1)
df
:
val ctr
0 100 1
1 101 2
2 104 3
3 104 0
4 106 4
5 108 5
6 108 0
7 108 0
如果您的“Val”序列已排序,您可以使用:
m = df['val'].ne(df['val'].shift())
df['ctr'] = np.where(m, m.cumsum(), 0)
結果:
print(df)
val ctr
0 100 1
1 101 2
2 104 3
3 104 0
4 106 4
5 108 5
6 108 0
7 108 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.