如何将含NA的DataFrame两列合并为新列并追加至原数据集?
高效合并两列生成新列的Pandas方法
嘿,你这个需求完全不用写循环来实现,Pandas提供了更简洁高效的矢量化操作,处理几千行数据速度快得多,下面给你几种实用的方法:
方法1:用fillna快速替换NA(最简洁)
根据你的需求,corprsd2为1时新列取1,为NA时取0,直接用fillna把NA替换成0,再转成整数类型就行:
import pandas as pd # 假设你的DataFrame叫df df['corcombined'] = df['corprsd2'].fillna(0).astype(int)
方法2:用np.where实现条件判断(更灵活)
如果以后你的规则有变化,比如需要结合corprsd1的值调整逻辑,用numpy的where函数可以更清晰地定义判断规则:
import pandas as pd import numpy as np df['corcombined'] = np.where(df['corprsd2'].notna(), df['corprsd2'], 0).astype(int)
这段代码的逻辑是:如果corprsd2不是缺失值(也就是等于1),就取corprsd2的值;否则取0,最后转成整数类型。
为什么不推荐循环?
Python的循环在处理Pandas DataFrame时效率很低,尤其是数据量达到几千行甚至更多的时候,矢量化操作是Pandas的设计初衷,能利用底层的C语言加速,比循环快几十倍都很正常,而且代码更简洁易读。
内容的提问来源于stack exchange,提问作者Bartosz M
相关产品推荐
相关产品推荐

