首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助使用Pandas Groupby创建计算列

帮助使用Pandas Groupby创建计算列
EN

Stack Overflow用户
提问于 2018-03-30 09:09:11
回答 1查看 35关注 0票数 2

我有一只叫做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

我使用以下代码按测试对数据进行分组--请参见下面的图像。

代码语言:javascript
复制
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%

任何关于创建这些计算字段的说明都将是非常有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 09:22:36

IIUC需要:

代码语言:javascript
复制
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.666667
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49571564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档