DataFrame中基于From/To列生成含To值连续序列的问题
解决DataFrame生成包含To值的连续序列问题
我来帮你搞定这个小问题!你已经找对了方向,只是在range的参数处理上有个容易忽略的细节——Python里的range是左闭右开的区间,也就是说range(start, stop)只会生成从start到stop-1的整数,这就是你明明加了1却没得到预期结果的原因(大概率是某次测试时没把+1加到正确的位置上)。
正确的解法步骤:
要生成包含To列数值的连续序列,必须把range的结束参数设为To + 1,再把序列转换成逗号分隔的字符串。
修正后的代码:
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'From': [15887, 15888, 15889, 15890], 'To': [16251, 16252, 16253, 16254] }) # 生成包含To值的连续序列并写入新列 df['Sequence'] = df.apply(lambda x: ','.join(map(str, range(x['From'], x['To'] + 1))), axis=1) # 查看结果 print(df.head())
验证效果:
比如针对From=5, To=11的情况,这段代码会生成"5,6,7,8,9,10,11",完全符合你的预期。对于示例里的第一行数据,序列会从15887一直到16251,包含两端的数值。
常见误区提醒:
- 不要忘记
axis=1参数:确保apply按行处理每一组From和To的值,否则会报错。 - 确认
range的结束值是To+1:如果写成range(x['From'], x['To']),就会漏掉To的值,这也是你之前测试时可能出现的问题。
内容的提问来源于stack exchange,提问作者S S
相关产品推荐
相关产品推荐

