[英]Counting True / False values in unique columns per rows in Pandas
我是熊貓的新手
我的數據幀:
df
A B C 1 2 3 4 5 6 7 8 9
5 2 4 True False False True False True False True False
2 2 1 True True False False False True False True False
5 4 7 False False True False True True False True True
4 4 1 False True False False False True False True True
2 0 8 False False True False True True False True True
我的目標:
計算每個類別1-9
和A
、 B
、 C
列的總和。
這樣我就可以回答這些小問題:
第1
True
A
列值的sum
是多少,第5
True
C
的sum
是多少。
實際上,我有大約 50 個類別1-50
,我想知道是否有一種聰明的方法來計算這些總和而不必使用這種行 50 次:
df['Sum of A where 1 is True'] = df.A.where(df.1)).sum()
等等。
謝謝你的建議。
您可以使用DataFrame.melt
通過True
s 和DataFrame.pop
過濾來提取列,然后聚合sum
:
df = (df.melt(['A','B','C'], var_name='Type', value_name='mask')
.loc[lambda x: x.pop('mask')]
.groupby('Type')
.sum())
print (df)
A B C
Type
1 7 4 5
2 6 6 2
3 7 4 15
4 5 2 4
5 7 4 15
6 18 12 21
8 18 12 21
9 11 8 16
IIUC,這只是matmul
:
# replace your columns accordingly
df[list('123456789')].T @ df[list('ABC')]
輸出:
A B C
1 7 4 5
2 6 6 2
3 7 4 15
4 5 2 4
5 7 4 15
6 18 12 21
7 0 0 0
8 18 12 21
9 11 8 16
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.