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

在Pandas DataFrame中添加多列公式列时第三列无值的问题排查

问题排查与修复方案

我来帮你逐一解决遇到的两个问题:第三列全为空,以及触发的FutureWarning。

1. 为什么“Count Days between Day 61 - 90”列全为空?

你的区间判断逻辑存在漏洞,同时可能和数据分布有关:

  • 你写的条件是(call_added['Count Day'] > 61) & (call_added['Count Day'] <= 90),这意味着只有严格大于61且≤90的天数才会返回True,61天本身被排除在外;同理,31-60天的条件写的是>31 & <=60,也漏掉了31天这个临界值,导致区间划分不连续。
  • 如果你的数据里本来就没有落在61-90之间的天数,那这一列全是False是正常的,只是CSV显示可能看起来像空值。

修正后的连续区间条件应该是:

# 1-30天(包含两端)
call_added.loc[:, 'Count Days between Day 1 - Day 30'] = ((call_added['Count Day'] > 0) & (call_added['Count Day'] <= 30))
# 31-60天(包含两端)
call_added.loc[:, 'Count Days between Day 31 - Day 60'] = ((call_added['Count Day'] > 30) & (call_added['Count Day'] <= 60))
# 61-90天(包含两端)
call_added.loc[:, 'Count Days between Day 61 - 90'] = ((call_added['Count Day'] > 60) & (call_added['Count Day'] <= 90))

你可以先排查数据分布:运行print(call_added['Count Day'].value_counts())或print(call_added['Count Day'].describe()),确认是否存在61-90之间的天数,这样就能判断是逻辑问题还是数据本身的问题。

2. 如何解决FutureWarning?

这个警告是列名大小写不匹配导致的:

  • 你的原始数据列名是userId(小写d),但你在header4列表里写的是userID(大写D),Pandas对列名大小写严格区分,当你用columns=header4保存CSV时,找不到userID这个列,就触发了警告。

修正header4的列名即可:

header4 = ['userId', 'Day 0', 'serviceDate', 'Call Count', 'Count Day',
           'Count Days between Day 1 - Day 30', 'Count Days between Day 31 - Day 60',
           'Count Days between Day 61 - 90']

完整修正后的关键代码片段

# 计算Count Day
call_added['Count Day'] = (call_added['serviceDate'] - call_added['Day 0']).dt.days

# 修正区间判断逻辑
call_added.loc[:, 'Count Days between Day 1 - Day 30'] = ((call_added['Count Day'] > 0) & (call_added['Count Day'] <= 30))
call_added.loc[:, 'Count Days between Day 31 - Day 60'] = ((call_added['Count Day'] > 30) & (call_added['Count Day'] <= 60))
call_added.loc[:, 'Count Days between Day 61 - 90'] = ((call_added['Count Day'] > 60) & (call_added['Count Day'] <= 90))

# 修正列名大小写的header4
header4 = ['userId', 'Day 0', 'serviceDate', 'Call Count', 'Count Day',
           'Count Days between Day 1 - Day 30', 'Count Days between Day 31 - Day 60',
           'Count Days between Day 61 - 90']

# 保存CSV
call_added.to_csv("calladded.csv", columns=header4)

内容的提问来源于stack exchange,提问作者Beakgirl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:49:37