编写函数替换apr_days零值:基于apr_hours向下取整计算填充
解决方案:替换apr_days零值并计算有效天数
嘿,我来帮你搞定这个用户政策时长统计的需求!咱们先理清楚核心规则:
- 当
apr_days是0,且对应的apr_hours大于0时,用apr_hours除以7向下取整的结果替换apr_days - 如果
apr_hours也是0(比如你的E行数据),那apr_days保持0不变
用Pandas实现的代码示例
假设你的数据是表格形式,用Pandas处理最方便,直接上代码:
import pandas as pd # 先构造你的原始数据 data = { 'id': ['A', 'B', 'C', 'D', 'E'], 'apr_days': [1, 2, 0, 0, 0], 'apr_hours': [7, 14, 8, 15, 0] } df = pd.DataFrame(data) # 应用替换逻辑 df['apr_days'] = df.apply( lambda row: row['apr_hours'] // 7 if (row['apr_days'] == 0 and row['apr_hours'] > 0) else row['apr_days'], axis=1 ) # 查看处理后的结果 print(df)
处理后的输出结果
运行上面的代码后,你会得到符合要求的数据:
id apr_days apr_hours 0 A 1 7 1 B 2 14 2 C 1 8 # 8//7=1,正确向下取整 3 D 2 15 # 15//7=2,正确 4 E 0 0 # 因为apr_hours=0,保留原零值
更高效的大数据量处理方式
如果你的数据量很大,用numpy.where会比apply更快,逻辑是完全一致的:
import numpy as np df['apr_days'] = np.where( (df['apr_days'] == 0) & (df['apr_hours'] > 0), df['apr_hours'] // 7, df['apr_days'] )
这样处理后,所有apr_hours>0的行都能得到正确的天数计数,完全符合你的业务目标~
内容的提问来源于stack exchange,提问作者Hanna
相关产品推荐
相关产品推荐

