pandas基于输入动态构造含静态列与动态position列的DataFrame方法
问题解决方法
报错根因
你初始化的filtered_positions_df是没有任何行的空DataFrame,直接调用iloc[-1]读取最后一行会触发索引越界错误。此外你原写法直接将position Series传入字典,append操作只会生成1行,无法实现一个position值对应一行的需求,同时pandas已废弃append方法,不推荐继续使用。
通用实现方案
无论position序列长度是1还是多个,都可以直接通过构造新DataFrame片段再合并的方式实现,固定值列会自动广播匹配行数:
import pandas as pd # 你计算得到的position序列,这里是示例值,可替换为你的实际计算逻辑输出 position_series = pd.Series([10, 2, 3]) # 初始化结果DataFrame filtered_positions_df = pd.DataFrame(columns=['status', 'position', 'presence_check']) # 构造新增数据:固定列直接赋值标量,pandas会自动匹配position的行数填充 add_df = pd.DataFrame({ "status": "Pass", "position": position_series, "presence_check": "Y" }) # 合并到结果表,ignore_index保证行号连续 filtered_positions_df = pd.concat([filtered_positions_df, add_df], ignore_index=True)
输出的filtered_positions_df就和你预期的结构完全一致。
内容的提问来源于stack exchange,提问作者silvercoder
相关产品推荐
相关产品推荐

