如何基于可变columns_list实现DataFrame的动态遍历操作
解决方案
你原有代码的问题是硬编码了3个列的索引,要适配动态长度的columns_list,只需要把固定的列调用改为遍历列表动态生成待zip的序列即可。
方案1:最小改动适配原有逻辑
直接修改循环内的代码,用列表推导式遍历所有目标列,再通过*解包传入zip:
for i in range(len(df)): s = tuple(zip(*[df[col].str.split(",")[i] for col in columns_list]))
方案2:优化执行效率(推荐)
原有写法每次循环都会重复对整列做str.split,数据量较大时性能损耗明显,可以先一次性完成所有列的拆分,再逐行处理:
# 先一次性完成所有目标列的拆分操作 split_result = [df[col].str.split(",") for col in columns_list] for i in range(len(df)): s = tuple(zip(*[col_split[i] for col_split in split_result]))
注意事项
- 需要保证同一行中所有目标列按逗号拆分后的元素数量一致,否则
zip会自动截断到最短序列的长度 - 如果需要保留不等长的所有元素,可以替换
zip为itertools.zip_longest
内容的提问来源于stack exchange,提问作者user17475933
相关产品推荐
相关产品推荐

