2017-03-09 32 views
1

有沒有人有一個想法如何計算數據透視表中的所有布爾值(包括錯誤的)?Python數據透視表中的所有布爾值

passed_exam是一列布爾值。

table = pd.pivot_table(df,index=["student","semester"], values=["passed_exam"],aggfunc=np.sum) 

但我也希望這樣計算所有布爾值的列:

此代碼只對真正的價值,這是偉大執行任務。

預先感謝您!

+0

否定表,做同樣的,添加兩個值? – Mathias711

回答

2

我認爲你需要groupbysize,最後由unstack重塑:

df = pd.DataFrame({'student':['a'] * 4 + ['b'] * 6, 
        'semester':[1,1,2,2,1,1,2,2,2,2], 
        'passed_exam':[True, False] * 5}) 

print (df) 
    passed_exam semester student 
0  True   1  a 
1  False   1  a 
2  True   2  a 
3  False   2  a 
4  True   1  b 
5  False   1  b 
6  True   2  b 
7  False   2  b 
8  True   2  b 
9  False   2  b 

table = df.groupby(["student","semester","passed_exam"]) 
      .size() 
      .unstack(fill_value=0) 
      .rename_axis(None, axis=1) 
      .reset_index() 
print (table) 
    student semester False True 
0  a   1  1  1 
1  a   2  1  1 
2  b   1  1  1 
3  b   2  2  2 
+0

非常感謝!是否有可能不重複a和b?我的意思是在第一行有空白,然後在第二行空白?並總是得到一個數據框 – Sheron

+0

當然,你可以用樣本數據,期望的輸出和你嘗試創建新的問題嗎?謝謝。 – jezrael

+0

並使用我的示例,沒有問題,或者您可以根據需要更改它。也許幫助[如何提供一個偉大的熊貓示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)。 – jezrael