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

如何在Pandas中基于另一列值添加指定格式的计数列

解决Pandas DataFrame添加Product_2列的问题

嘿,这个需求很明确,咱们可以通过Pandas的字符串处理、分组和序列生成来实现,一步步来:

步骤1:提取Product中的数值信息

首先从Product列拆分出最小值和最大值的数字部分,转成整数方便计算:

import pandas as pd

# 假设你的DataFrame已经加载为df
# 拆分Product列,提取中间的min和max数值
df[['prefix', 'min_p', 'max_p']] = df['Product'].str.split('_', expand=True)
df['min_p'] = df['min_p'].astype(int)
df['max_p'] = df['max_p'].astype(int)

步骤2:计算每个Product的计数区间

根据规则计算每个Product对应的起始值和结束值:

# 计算起始值:(最小值×2)+1
df['start'] = df['min_p'] * 2 + 1
# 计算结束值:最大值×2
df['end'] = df['max_p'] * 2

步骤3:生成Product_2列

每个(Product, value)组正好有4行,而我们计算的区间长度刚好是4(比如x_00_02的区间是1-4,共4个数),所以按这两个字段分组后,给每组生成连续序列并格式化:

# 分组生成序列,然后展开匹配每行
df['Product_2'] = df.groupby(['Product', 'value']).apply(
    lambda group: [f"val_{num:03d}" for num in range(group['start'].iloc[0], group['end'].iloc[0]+1)]
).explode()

步骤4:清理中间列

最后删掉我们临时用的中间列,得到最终结果:

# 移除临时列
df = df.drop(['prefix', 'min_p', 'max_p', 'start', 'end'], axis=1)

验证结果

运行完上面的代码后,你的DataFrame就会和预期输出一致:

  • x_00_02的每个value组会生成val_001到val_004
  • x_02_04的每个value组会生成val_005到val_008
  • x_04_06的每个value组会生成val_009到val_012

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:22:54