【发布时间】:2018-03-14 08:04:38
【问题描述】:
下午,
我一直在尝试解决这个问题,任何帮助将不胜感激。
这是我的数据框:
Channel state rfq_qty
A Done 10
B Tied Done 10
C Done 10
C Done 10
C Done 10
C Tied Done 10
B Done 10
B Done 10
我想:
- 按频道分组,然后状态
- 对每个通道的 rfq_qty 求和
- 计算状态中每个“完成”字符串的出现次数(“完成”被视为与“已完成”相同,即其中包含“完成”的任何内容)
- 将通道 rfq_qty 显示为 rfq_qty (80) 总数的百分比
Channel state rfq_qty Percentage
A 1 10 0.125
B 3 30 0.375
C 4 40 0.5
我尝试了以下方法:
df_Done = df[
(
df['state']=='Done'
)
|
(
df['state'] == 'Tied Done'
)
][['Channel','state','rfq_qty']]
df_Done['Percentage_Qty']= df_Done['rfq_qty']/df_Done['rfq_qty'].sum()
df_Done['Done_Trades']= df_Done['state'].count()
display(
df_Done[
(df_Done['Channel'] != 0)
].groupby(['Channel'])['Channel','Count of Done','rfq_qty','Percentage_Qty'].sum().sort_values(['rfq_qty'], ascending=False)
)
有效,但看起来很复杂。有什么改进吗?
【问题讨论】:
标签: python pandas dataframe group-by summary