如何通过IronPython为数据函数输入设置过滤方案?
IronPython 数据过滤方案(不修改原数据表)
场景1:仅过滤输入列数据(不复制数据表)
直接对传入的列数据做过滤处理,原数据表保持完全不变。以下是两种常见实现方式:
基础列表/迭代器过滤
如果输入列是基础迭代结构(如列表):
# 假设 input_column 是从原数据表获取的列数据 filtered_data = [item for item in input_column if item > 10] # 后续可直接使用 filtered_data 做计算或可视化,原数据表无任何改动
Pandas 列过滤(环境支持时)
如果你的IronPython环境集成了Pandas:
# input_series 是从原DataFrame提取的目标列 filtered_series = input_series[input_series > 10]
场景2:复制数据表并过滤副本
如果需要保留完整表结构的过滤结果,可先复制原表再操作副本,原表不受影响:
Pandas DataTable 复制过滤
# 复制原数据表生成独立副本 copied_df = original_df.copy() # 对副本应用过滤条件,示例为保留"target_col"列值大于10的行 filtered_df = copied_df[copied_df["target_col"] > 10] # 后续操作仅针对 filtered_df,原表 original_df 完全未被修改
.NET DataTable 复制过滤(IronPython原生支持)
import clr clr.AddReference("System.Data") from System.Data import DataTable # 复制原DataTable生成独立副本 copied_dt = original_dt.Copy() # 遍历副本标记需删除的行,避免遍历中修改集合引发异常 rows_to_remove = [] for row in copied_dt.Rows: if row["target_col"] <= 10: rows_to_remove.append(row) # 删除不符合条件的行 for row in rows_to_remove: copied_dt.Rows.Remove(row)
内容的提问来源于stack exchange,提问作者Zegher V
相关产品推荐
相关产品推荐

