python - 同组中的 Sum 和 Listby Pandas
问题描述
我想创建一个简单的变量,在其中同时执行 df_dates 和 df_sum 。可能吗?我的意思是,我需要对所有单元格进行总和,但对于“日期”,我需要一个数组(列表)
import datetime
import pandas as pd
df = pd.read_csv('global.csv')
df_dates = df.groupby(['Io Id'])['Date'].apply(list)
df_sum = df.groupby(['Advertiser ID', 'Campaign Id', 'C Goal', 'C Goal KPI', 'C Goal KPI Value', 'Insertion Order', 'Io Id', 'IO Pacing', 'IO Pacing Rate', 'IO Pacing Amount', 'IO Goal Type', 'IO Goal Value', 'IO Budget Type', 'IO_Bud_Imp', 'IO_Bud_Start', 'IO_Bud_End'])['Impressions', 'Clicks', 'Click Rate (CTR)', 'Total Conversions', 'Post-Click Conversions', 'Post-View Conversions', 'Revenue (Adv Currency)'].sum()
df_dates = df_dates.to_frame()
df_first = pd.merge(df_dates, df_sum, on='Io Id')
解决方案
尝试使用agg
字典来了解如何聚合每一列:
创建要求和的列列表:
collist = ['Impressions', 'Clicks', 'Click Rate (CTR)', 'Total Conversions', 'Post-Click Conversions', 'Post-View Conversions', 'Revenue (Adv Currency)']
从此列表创建字典:
dsum = {i:'sum' for i in collist}
现在使用函数列表将“日期”添加到此字典
dsum['Date'] = list
现在,将 groupby 与 agg 一起使用:
collist.append('Date')
df.groupby(['Advertiser ID', 'Campaign Id', 'C Goal', 'C Goal KPI',
'C Goal KPI Value', 'Insertion Order', 'Io Id', 'IO Pacing',
'IO Pacing Rate', 'IO Pacing Amount', 'IO Goal Type',
'IO Goal Value', 'IO Budget Type', 'IO_Bud_Imp', 'IO_Bud_Start',
'IO_Bud_End'])[collist].agg(dsum)
推荐阅读
- python - 当张量不提供 numpy() 时如何获取数据
- javascript - 在 React 中提交表单后函数不返回组件
- c - VS 代码:来自命令“-exec-run”的意外 GDB 输出
- mysql - 对相似的 meta_key 值进行分组并使用 meta_value 数据创建结果集
- jestjs - 将 Jest 与 @web/test-runner 一起使用
- wpf - Prism - 在多外壳应用程序 (WPF) 中每个外壳使用子 IoC 容器
- firebase - 将所有用户放在一个集合 Firebase 中?
- python - 在邀请 DM 中获取服务器名称和用户提及
- r - 我的表格是我分组条形图奇怪格式的原因吗?
- java - 如何解析(通过循环)字符串直到字符串结束?