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

Pandas中如何从col1补全col_2元素间缺失值生成col3列

解决方案

你的需求本质是对每一行,取col_2元素覆盖的数值区间(即col_2最小值到最大值的闭区间),提取col1中落在这个区间内的所有值,存入新列col3。

直接用apply逐行处理即可,代码如下:

import pandas as pd

# 构造示例DataFrame
data = {'col1':[[0,1,2,3,4,5],[0,1,2,3,4,5,6,7,8,9],[0,1,2,3]],
       'col_2':[[2,4,5],[6,7,9],[0,1,2]]}
df = pd.DataFrame(data)

# 生成新列col3
df['col3'] = df.apply(
    lambda row: [num for num in row['col1'] if min(row['col_2']) <= num <= max(row['col_2'])],
    axis=1
)

运行后输出的DataFrame和你预期的结果完全一致:

col1      col_2          col3
0               [0, 1, 2, 3, 4, 5]  [2, 4, 5]  [2, 3, 4, 5]
1  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  [6, 7, 9]  [6, 7, 8, 9]
2                     [0, 1, 2, 3]  [0, 1, 2]  [0, 1, 2]

效率优化方案

观察你的数据可以发现,col1存储的是从0开始的连续升序整数列表,这种情况下不需要遍历每个元素判断,直接通过索引切片就能拿到结果,数据量大时运行速度更快:

df['col3'] = df.apply(
    lambda row: row['col1'][min(row['col_2']): max(row['col_2']) + 1],
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:24:11