求助:为DataFrame新增sum_columns列时结果全为NaN的问题
解决DataFrame新增数值列求和列全为NaN的问题
你的代码出现全NaN的原因是:df.select_dtypes(include="number").apply(np.sum)默认按列计算求和,得到的是一个以原数值列名为索引的Series。当把这个Series赋值给df的新列时,由于它的索引和df的行索引不匹配,导致所有行都填充为NaN。
正确解决方案
方法1:直接使用sum方法(推荐,效率更高)
通过指定axis=1参数,让求和操作按行执行:
import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame({ 'col1': [1, 2, 3], 'col2': [4.1, 5.2, 6.3], 'col3': ['foo', 'bar', 'baz'] }) # 筛选数值列并按行求和,新增sum_columns列 df["sum_columns"] = df.select_dtypes(include="number").sum(axis=1)
方法2:使用apply并指定axis=1
如果你更习惯用apply,只需补充axis=1参数即可:
df["sum_columns"] = df.select_dtypes(include="number").apply(np.sum, axis=1)
两种方法都能正确匹配df的行索引,生成每行对应数值列的求和结果,不会出现NaN。
内容的提问来源于stack exchange,提问作者Winston Lee
相关产品推荐
相关产品推荐

