如何用Pandas计算团队月度Dials-to-Conn/Conv平均率及日期解析问题
解决Pandas时间范围解析错误并计算团队销售转化率
1. 修复Timerange字段的月份提取问题
你的Timerange是'10/3 - 10/7'这类范围格式,直接用pd.DatetimeIndex解析会触发报错,因为它并非单个标准日期格式。可以用两种简单方法提取月份:
- 字符串拆分法:直接截取范围中第一个日期的月份部分,通用适配同格式数据
# 拆分时间范围取第一个日期,再提取月份并转为整数 df['Month'] = df['Timerange'].str.split(' - ').str[0].str.split('/').str[0].astype(int) - 正则匹配法:通过正则精准提取开头的数字月份,兼容性更强
import re df['Month'] = df['Timerange'].apply(lambda x: int(re.match(r'(\d+)\/', x).group(1)))
2. 计算团队整月平均转化率
假设你的DataFrame包含Dials(拨号数)、Connections(接通数)、Conversations(会话数)字段,按以下步骤计算目标比率:
实现代码
# 筛选10月数据(若数据集包含其他月份) oct_data = df[df['Month'] == 10] # 计算单条记录的两个转化率 oct_data['Dials_to_connection'] = oct_data['Connections'] / oct_data['Dials'] oct_data['Dials_to_conversation'] = oct_data['Conversations'] / oct_data['Dials'] # 计算团队整月平均率并整理格式 team_avg = oct_data[['Dials_to_connection', 'Dials_to_conversation']].mean().reset_index() team_avg.columns = ['Metric', 'Team Monthly Average']
输出示例表格
| Metric | Team Monthly Average |
|---|---|
| Dials_to_connection | 0.12 |
| Dials_to_conversation | 0.08 |
简化方案(仅针对全10月数据)
如果你的数据集所有Timerange都属于10月,可跳过月份提取步骤,直接计算:
team_avg = df.assign( Dials_to_connection=df['Connections']/df['Dials'], Dials_to_conversation=df['Conversations']/df['Dials'] )[['Dials_to_connection', 'Dials_to_conversation']].mean().reset_index() team_avg.columns = ['Metric', 'Team Monthly Average']
内容的提问来源于stack exchange,提问作者Tushaar
相关产品推荐
相关产品推荐

