Python 根据另一列条件以及总和和计数按列值分组

Python 根据另一列条件以及总和和计数按列值分组,python,pandas,Python,Pandas,我想将我的策略设置为一个变量,这样我就可以输入我想要的任何策略。按节目分组,统计出现的节目数,汇总浏览量和收入。我怎样才能做到这一点 我的桌子看起来像 policy. show. views. revenue 10 min. batman. 100. 10 10 min batman. 200. 20 5 min. joker. 100. 10 5 min joker. 300. 15 15 min

我想将我的策略设置为一个变量,这样我就可以输入我想要的任何策略。按节目分组,统计出现的节目数,汇总浏览量和收入。我怎样才能做到这一点

我的桌子看起来像

policy.    show.    views.  revenue
10 min.    batman.   100.     10
10 min     batman.   200.     20
5 min.     joker.    100.     10
5 min      joker.    300.     15
15 min.    superman. 500.     30
我的预期产出是

策略='10分钟'

Show       count    total_views    total_revenue
batman.    2.        300.            30
如果我给policy='5min',我的输出应该是

 Show       count    total_views    total_revenue
 joker.     2.        400.            25
类似地,对于任何其他政策,我在可变政策下给出了这可能有助于您:

def set_policy(df, policy):
    filtered = df[df['policy'] == policy]
    t = {'show': filtered['show'].unique()[0], 'count': filtered.shape[0],
         'total_views': filtered['views'].sum(), 'total_revenue': filtered['revenue'].sum()}
    return pd.DataFrame([t])

df = set_policy(df, '10min')
输出:

     show  count  total_views  total_revenue
0  batman      2          300             30
更新

示例数据帧

  policy      show  views  revenue
0  10min    batman    100       10
1  10min    batman    200       20
2   5min     joker    100       10
3   5min     joker    300       15
4  15min  superman    500       30
5  10min  superman    100       20
守则:

def set_policy(df, policy):
    t = defaultdict(list)
    filtered = df[df['policy'] == policy]
    gp = filtered.groupby('show')
    for i, k in gp:
        t['show'].append(k['show'].unique()[0])
        t['count'].append(k.shape[0])
        t['total_views'].append(k['views'].sum())
        t['total_revenue'].append(k['revenue'].sum())
    return pd.DataFrame(t)

df = set_policy(df, '10min')
输出

       show  count  total_views  total_revenue
0    batman      2          300             30
1  superman      1          100             20

尝试使用
groupby
agg
你的输出不应该是
joker吗。2.40025
??以及您的
策略。
列未标准化:为什么有些值在末尾有句点,而有些值没有句点。我得到了这个错误:索引0超出了大小为0的轴0的界限您是否检查了列名?你的最后有“.”。策略值包含空格。我打印了我的df并检查是否有所有的。数据。很好,我看到所有的节目标题都集中在一个单元格中。我希望所有的系列节目都按单个节目分组names@Yash