You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写函数替换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:34:10