我有一只叫做relevant_URT_data的熊猫,它看起来像这样:
测试MRN号码ResCat
12 AP付款详情INC3778700 0
33 AP付款详情NaN INC3783080 0
72 AP付款详情URT INC3782671 0
150 AP质量保证支付状况URT INC3778770 0
178个公共关系公共部门调查NaN INC3776742 1
192个AP质量保证支付状态NaN INC3778547 0
315 AP质量保证支付状况URT INC3780548 0
328个PR会计W-2表URT INC3782016 0
355个AP通用提交付款发票INC3781884 0
美联社普通调查NaN INC3775944 0
我使用以下代码按测试对数据进行分组--请参见下面的图像。
test_breakdown = relevant_URT_data[["test","MRN","Number"]] \
.groupby("test") \
.agg({'MRN':'count', 'Number':'size'}) \
.rename(columns={'MRN':'URT Use Count','Number':'Number'})测试URT使用计数号
AP连接服务访问请求9 9
AP付款详情28 35
AP一般调查1 7
AP一般提交付款发票25 27
AP通用WebNow/发票副本0 4
AP MyExpense访问请求3 3
AP MyExpense授予授权访问0 1
美联社MyExpense调查2 8
AP质量保证支付状况56 71
主计长办公室-总医疗中心7 10
公共关系会计W-2表格6 9
PR HBS调查0 17
PR HBS时间表计算0 2
PR加工和生产直接存款2 2
PR加工和生产支付细节0 1
探视就业如何申请VOE 1 1 1
PR就业书面记录的核实2 4
我的目标是将2列添加到分组数据集中:
1)一个列,该列显示“URT使用计数”除以“Number”(我需要数字的百分比,即MRN) 2)一列显示ResCat == 0除以数字(我想要ResCat等于0的数字的百分比)
下面是我希望输出的最佳结果--下面显示了两个新列:
测试URT使用计数号码Percentage_Use Same_Day_Percentage
AP连接服务访问请求9 9 100% 55%
AP付款详情28 35 80% 77%
美联社一般调查1 7 14% 92%
AP通用发票25 27 92% 97%
AP一般WebNow/发票副本0 4 0% 19%
AP MyExpense接入请求3 3 100% 50%
AP MyExpense授予授权访问0 1 0% 50%
美联社MyExpense调查2 8 25% 77%
AP质量保证付款状况56 71 79% 88%
主计长办公室综合医疗中心7 10 70% 20%
公共关系会计W-2表格6 9 67% 20%
PR HBS调查0 17 0% 100%
PR HBS时间表计算0 2 0% 45%
PR加工和生产直接存款2 2 100% 99%
PR加工和生产支付细节0 1 0% 15%
审查就业情况-如何要求VOE 1 1 100% 12%
就业证明2 4 50% 22%
任何关于创建这些计算字段的说明都将是非常有用的。
发布于 2018-03-30 09:22:36
IIUC需要:
df = pd.DataFrame({'A':list('abcdef'),
'MRN':[4,5,4,5,5,np.nan],
'Number':[7,8,9,4,2,3],
'ResCat':[0,1,0,0,1,1],
'test':list('aaabbb')})
print (df)
A MRN Number ResCat test
0 a 4.0 7 0 a
1 b 5.0 8 1 a
2 c 4.0 9 0 a
3 d 5.0 4 0 b
4 e 5.0 2 1 b
5 f NaN 3 1 b
df1 = df.groupby("test") \
.agg({'MRN':'count', 'Number':'size', 'ResCat':lambda x: (x == 0).sum()}) \
.rename(columns={'MRN':'URT Use Count'}) \
.reset_index()
print (df1)
test URT Use Count Number ResCat
0 a 3 3 2
1 b 2 3 1
df1[['a','b']] = df1[['ResCat','URT Use Count']].div(df1['Number'], axis=0)
print (df1)
test URT Use Count Number ResCat a b
0 a 3 3 2 0.666667 1.000000
1 b 2 3 1 0.333333 0.666667https://stackoverflow.com/questions/49571564
复制相似问题