[英]Add index in pandas based on each occurance of another column specific value
[英]Compute number of occurance of each value and Sum another column in Pandas
我有一個熊貓數據框,其中有一些列。 我感興趣的專欄是這樣的,
df['col'] = ['A', 'A', 'B', 'C', 'B', 'A']
我想再說一列col_count
,以便它顯示從該索引到該列結尾的col
計數值。
列中的第A
應該具有值3,因為該索引中的列中出現了3個A
第二個A
將具有值2
,依此類推。
最后,我想得到以下結果,
col col_count
0 A 3
1 A 2
2 B 2
3 C 1
4 B 1
5 A 1
如何在熊貓中有效地做到這一點? 我能夠通過遍歷數據框並為切片的數據框對該值進行唯一計數來做到這一點。
有沒有一種有效的方法可以做到這一點? 沒有循環的東西比較可取。
問題的另一部分是,我還有col
這樣的另一列,
df['X'] = [10, 40, 10, 50, 30, 20]
我想用對列col
進行計數的相同方式來總結此列。
例如,在索引0處,我將得到10 + 40 + 20。 在索引1,總和為40 +20。簡而言之,我想對另一列求和而不是計數。
結果將是這樣,
col col_count X X_sum
0 A 3 10 70
1 A 2 40 60
2 B 2 10 40
3 C 1 50 50
4 B 1 30 30
5 A 1 20 20
使用pandas.Series.groupby
和cumcount
cumsum
。
g = df[::-1].groupby('col')
df['col_count'] = g.cumcount().add(1)
df['X_sum'] = g['X'].cumsum()
print(df)
輸出:
col X col_count X_sum
0 A 10 3 70
1 A 40 2 60
2 B 10 2 40
3 C 50 1 50
4 B 30 1 30
5 A 20 1 20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.