如何将为DataFrame补充缺失零值列的循环改写为列表推导式
解决方法:用推导式替代循环补全Pandas DataFrame列并调整顺序
先看你的原循环实现(参考示例场景):
import pandas as pd df = pd.DataFrame({'a':[0,1,0], 'c':[1,1,1]}) col_names = ['a', 'b', 'c'] # 原循环补列逻辑 for col in col_names: if col not in df.columns: df[col] = 0 # 调整列顺序 df = df[col_names]
可以用字典推导式(适配场景的最优推导式写法)一步完成补列和列顺序调整,代码更简洁:
import pandas as pd df = pd.DataFrame({'a':[0,1,0], 'c':[1,1,1]}) col_names = ['a', 'b', 'c'] # 推导式实现:补全缺失列+指定列顺序 df = pd.DataFrame({ col: df[col] if col in df.columns else [0]*len(df) for col in col_names })
逻辑说明
- 遍历指定的
col_names列表,对每个列名做判断:- 如果列已存在于原DataFrame,直接取用原列数据
- 如果列不存在,生成一个和原DataFrame行数一致的全零列表作为该列数据
- 用推导得到的字典构造新DataFrame,自动按照
col_names的顺序排列列
运行后得到的结果完全符合需求:
a b c 0 0 0 1 1 1 0 1 2 0 0 1
这种写法省去了循环遍历和单独调整列顺序的步骤,代码更紧凑易读。
内容的提问来源于stack exchange,提问作者ScottC
相关产品推荐
相关产品推荐

