Pandas, Pivot table from 2 columns with values being a count of one of those columns

后端 未结 2 1525
一整个雨季
一整个雨季 2021-01-01 07:49

I have a pandas dataframe:

+---------------+-------------+
| Test_Category | Test_Result |
+---------------+-------------+
| Cat_1         | Pass        |
|          


        
2条回答
  •  情深已故
    2021-01-01 08:33

    You could construct a new dataframe using unique values in the two columns as indices and columns, and use pandas' iterrows()

    df_out = pd.DataFrame(index=df['Test_Category'].unique().tolist(), columns=df['Test_Result'].unique().tolist())
    
    for index, row in df_out.iterrows():
        for col in df_out.columns:
            df_out.loc[index, col] = len(df[(df['Test_Category'] == index) & (df['Test_Result'] == col)])
    

    Output:

           Pass  nan  Fail
    Cat1     1    1     0
    Cat2     0    0     2
    Cat3     2    1     1
    

    Although using groupby() should definitely be faster.

提交回复
热议问题