应用背景:
有一组销售单数据,需要计算销售单开单时间到当前日期的时差;取得差异的天数,
计算时差所在时间区间,用于生成透视表。
销售组 | 销售员 | 开单时间 | 时差 | 时间节点 |
1组 | 员A | 2022-1-13 15:52 | ||
2组 | 员B | 2022-2-17 14:09 | ||
3组 | 员C | 2022-2-25 14:16 |
import pandas as pd
import datetime
#读入文件省略,读取后DataFrame的名称为df_A
df_A['时差'] = datetime.date.today()- pd.to_datetime(df_A['开单时间'],format='%Y-%m-%d')
销售组 | 销售员 | 开单时间 | 时差 | 时间节点 |
1组 | 员A | 2022-1-13 15:52 | 93 days 08:07:32 | |
2组 | 员B | 2022-2-17 14:09 | 58 days 09:50:41 | |
3组 | 员C | 2022-2-25 14:16 | 50 days 10:50:37 |
*:一开始想对“时差”列通过分列split来获取days前的数字, 但DataFrame获取列后是Series不能使用分列函数,最后得换个方法;
df_A['时差'] = df_A['时差'].astype('timedelta64[D]').astype(float)
销售组 | 销售员 | 开单时间 | 时差 | 时间节点 |
1组 | 员A | 2022-1-13 15:52 | 93 | |
2组 | 员B | 2022-2-17 14:09 | 58 | |
3组 | 员C | 2022-2-25 14:16 | 50 |
此时就可用apply函数对“时间节点”进行区间计算
def getA(df):
if df>7:
return '1周以上'
else:
return '周内'
df_A['时间节点']=df_A['时差'].apply(getA)
销售组 | 销售员 | 开单时间 | 时差 | 时间节点 |
1组 | 员A | 2022-1-13 15:52 | 93 | 1周以上 |
2组 | 员B | 2022-2-17 14:09 | 58 | 1周以上 |
3组 | 员C | 2022-2-25 14:16 | 50 | 1周以上 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)