使用pandas聚合表

时间:2018-05-14 13:02:57

标签: python pandas

以下是输入。

            X   Y   Z
AP          1   1   1
Karnataka   0   1   0
Goa         1   1   0
Tamilnadu   0   1   0
AP          0   1   1
Goa         0   0   0
Tamilnadu   0   1   1
Goa         0   0   0
AP          1   0   0
Tamilnadu   0   1   0
Tamilnadu   1   1   0
Goa         0   1   1
Karnataka   0   0   0
Karnataka   0   1   0

要执行的计算:

  1. A列中的州数

  2. 第X列中存在的1的数量除以A列中每个州的数量

  3. 代码应该是动态的,因为列数和行数可能会有所不同。

  4. 预期产出:

                       Total      AP   Karnataka    Goa      Tamilnadu
    Total Sample        14        3        3         4           4
    X                 0.2857    0.6667  0.0000    0.2500      0.2500
    Y                 0.7143    0.6667  0.6667    0.5000      1.0000
    Z                 0.2857    0.6667  0.0000    0.2500      0.2500
    

1 个答案:

答案 0 :(得分:0)

我确信有更好的方法,但以下工作。

假设my_df有输入数据;

result=my_df.groupby('A').mean().transpose()
result1=my_df.groupby('A').sum().transpose()
result1=result1.append(my_df['A'].value_counts())
result1=result1.rename({'A':'Total Sample'})
result1['Total']=result1.apply('sum',axis=1)
finalRow=result1.iloc[len(result1)-1]
for i in range(len(result1)-1):
    result1.iloc[i]=result1.iloc[i]/finalRow
result['Total']=result1['Total']
result=result.append(result1.loc['Total Sample'])

完成!!!