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