根据Pandas分组结果计算公式并添加到最终结果集中

数据框:


df = {'Client': ['A', 'A', 'A',

                 'B', 'B', 'B', 'B','B','B','B','B',

                 'C',

                 'D','D','D','D','D','D','D','D','D','D','D' ],

'Result': ['Covered', 'Customer Reject', 'Customer Timeout',

           'Dealer Reject','Dealer Timeout','Done','Tied Covered','Tied Done','Tied Traded Away','Traded Away','No RFQ',

           'No RFQ',

           'Covered','Customer Reject','Customer Timeout','Dealer Reject','Dealer Timeout','Done','Tied Covered','Tied Done','Tied Traded Away','Traded Away','No RFQ']}

df = pd.DataFrame.from_dict(df)

print(df)


   Client            Result

0       A           Covered

1       A   Customer Reject

2       A  Customer Timeout

3       B     Dealer Reject

4       B    Dealer Timeout

5       B              Done

6       B      Tied Covered

7       B         Tied Done

8       B  Tied Traded Away

9       B       Traded Away

10      B            No RFQ

11      C            No RFQ

12      D           Covered

13      D   Customer Reject

14      D  Customer Timeout

15      D     Dealer Reject

16      D    Dealer Timeout

17      D              Done

18      D      Tied Covered

19      D         Tied Done

20      D  Tied Traded Away

21      D       Traded Away

22      D            No RFQ

期望的输出:


我想添加两个使用每个返回分组结果的公式。因此,将有Total一行(每个客户端的所有结果的总和),但也有两个基于从每个客户端返回的分组值之和的公式(Pct_Calc_1和):Pct_Calc_2


Pct_Calc_1 = (Total_Result_Per_Client - Total_Dealer_Reject_Per_Client - Total_Dealer_Timeout_Per_Client) / (Total_Per_Client - Total_Customer_Reject_Per_Client)


Pct_Calc_2 = (Total – (Covered + Tied Covered) – Customer Reject – Dealer Reject – Dealer Timeout – (Traded Away + Tied Traded Away)) / (Total – Dealer Reject – Dealer Timeout)

如果需要更改原始分组来满足此额外输出,那么一切都很好。


慕姐8265434
浏览 118回答 1
1回答

FFIVE

让我们做crosstabs = pd.crosstab(df.Client,df.Result,margins=True).drop('All')s['Cal1']=(s['All'] - s['Dealer Reject'] - s['Dealer Timeout'])/(s['All'] - s['Customer Reject'])s = s.stack().reset_index(name='value')s   Client            Result  value0       A           Covered   1.001       A   Customer Reject   1.002       A  Customer Timeout   1.003       A     Dealer Reject   0.004       A    Dealer Timeout   0.005       A              Done   0.006       A            No RFQ   0.007       A      Tied Covered   0.008       A         Tied Done   0.009       A  Tied Traded Away   0.0010      A       Traded Away   0.0011      A               All   3.0012      A              Cal1   1.5013      B           Covered   0.0014      B   Customer Reject   0.0015      B  Customer Timeout   0.0016      B     Dealer Reject   1.0017      B    Dealer Timeout   1.0018      B              Done   1.0019      B            No RFQ   1.0020      B      Tied Covered   1.0021      B         Tied Done   1.0022      B  Tied Traded Away   1.0023      B       Traded Away   1.0024      B               All   8.0025      B              Cal1   0.7526      C           Covered   0.0027      C   Customer Reject   0.0028      C  Customer Timeout   0.0029      C     Dealer Reject   0.0030      C    Dealer Timeout   0.0031      C              Done   0.0032      C            No RFQ   1.0033      C      Tied Covered   0.0034      C         Tied Done   0.0035      C  Tied Traded Away   0.0036      C       Traded Away   0.0037      C               All   1.0038      C              Cal1   1.0039      D           Covered   1.0040      D   Customer Reject   1.0041      D  Customer Timeout   1.0042      D     Dealer Reject   1.0043      D    Dealer Timeout   1.0044      D              Done   1.0045      D            No RFQ   1.0046      D      Tied Covered   1.0047      D         Tied Done   1.0048      D  Tied Traded Away   1.0049      D       Traded Away   1.0050      D               All  11.0051      D              Cal1   0.90
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python