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

如何用Pandas为DataFrame新增Days_Group列实现天数分组?

嗨,这个需求用Pandas处理起来很简单,我给你两种常用的实现方式,你可以根据自己的习惯选择:

方法一:使用pd.cut()(适合区间分组场景)

pd.cut()是Pandas专门用于数值区间分组的工具,非常适配这种按范围划分的需求。不过你的规则里有几个边界细节需要先明确:

  • 7.0 ≤ days ≤7.1 的值没有定义分组(比如7.05)
  • 14.0 < days <15.0 的值也没有定义(比如你示例里的14.9)

我先严格按照你给出的规则写代码,你可以根据实际数据调整边界逻辑:

import pandas as pd
import numpy as np

# 假设你的DataFrame名为df,这里用你给的示例数据初始化
df = pd.DataFrame({'days': [1, 3.0, 2, 4.6, 14.9, 7.1, 15.1, 109]})

# 定义分组区间和对应的标签
# 区间划分:(-∞,7.0), [7.0,7.1), [7.1,14.0), [14.0,15.0), [15.0,+∞)
bins = [-np.inf, 7.0, 7.1, 14.0, 15.0, np.inf]
labels = ['1-6 days', np.nan, '7-14 days', np.nan, '> 14 days']

# 生成分组列,include_lowest=True确保左边界包含在内
df['Days_Group'] = pd.cut(df['days'], bins=bins, labels=labels, include_lowest=True)

# 如果需要处理未定义的边界值(比如把7.0-7.1归到"7-14 days",14.0-15.0归到"> 14 days"),可以补充:
# df.loc[df['days'].between(7.0,14.0), 'Days_Group'] = '7-14 days'
# df.loc[df['days'] >14.0, 'Days_Group'] = '> 14 days'

方法二:使用np.select()(适合自定义多条件场景)

如果你觉得区间划分不够直观,用np.select()可以直接写每个分组的判断条件,逻辑更清晰易懂:

import pandas as pd
import numpy as np

df = pd.DataFrame({'days': [1, 3.0, 2, 4.6, 14.9, 7.1, 15.1, 109]})

# 定义条件列表和对应的分组标签
conditions = [
    df['days'] < 7.0,  # 0-7天(不含7.0)
    (df['days'] >= 7.1) & (df['days'] <= 14.0),  # 7.1-14.0天(包含两端)
    df['days'] >= 15.0  # 15天及以上
]
choices = [
    '1-6 days',
    '7-14 days',
    '> 14 days'
]

# 生成分组列,default是未匹配到任何条件时的值(比如14.9这种)
df['Days_Group'] = np.select(conditions, choices, default=np.nan)

# 如果你想把14.0到15.0之间的值也归到"> 14 days",只需要调整第三个条件:
# conditions[-1] = df['days'] > 14.0
# 这样14.9就会被分到"> 14 days"组,更符合直觉

测试结果(原规则)

用你给的示例数据运行后,Days_Group列的结果如下:

daysDays_Group
11-6 days
3.01-6 days
21-6 days
4.61-6 days
14.9NaN
7.17-14 days
15.1> 14 days
109> 14 days

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:42:41