簡體   English   中英

計算 Pandas 中每行唯一列中的真/假值

[英]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-9ABC列的總和。

這樣我就可以回答這些小問題:

1 True A列值的sum是多少,第5 True Csum是多少。

實際上,我有大約 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM