如何更高效简洁地编写提取DataFrame行整数值的Pandas代码
优化后的简洁高效写法
你可以利用pandas的内置向量化方法简化代码,避免手动循环和冗余的Series转换,以下是几种更优的实现方式:
基础简洁版
Me = df.loc[s[0], 'ipo_oso':'neg'].dropna().astype(int).tolist()
说明:
df.loc[s[0], 'ipo_oso':'neg']直接返回目标行的指定列范围,本身就是Series,无需额外用pd.Series()包裹dropna()直接剔除缺失值astype(int)批量将数值转换为整数(向量化操作,比手动循环效率更高)tolist()直接将Series转为整数列表
健壮性增强版(处理非数值型数据)
如果目标列中可能存在非数值类型的内容,可以先统一转为数值再处理缺失值:
Me = pd.to_numeric(df.loc[s[0], 'ipo_oso':'neg'], errors='coerce').dropna().astype(int).tolist()
说明:
pd.to_numeric(..., errors='coerce')会将无法转为数值的内容强制转为NaN,确保后续dropna()能统一处理- 其余步骤和基础版一致
效率对比
原代码中[int(x) for x in np.array(Me)]是逐元素循环的标量操作;而pandas的astype(int)是基于numpy的向量化操作,在数据量较大时,运行效率会显著提升,同时代码更简洁易读。
内容的提问来源于stack exchange,提问作者drMAIN
相关产品推荐
相关产品推荐

