如何在Pandas中按行统计非NaN值并将结果存入新列?
解决按行统计DataFrame非NaN值并新增列的问题
嘿,别着急!这个需求用Pandas自带的方法就能轻松搞定,我给你一步步讲清楚~
首先,直接上可以运行的完整代码,你复制过去就能得到想要的结果:
import pandas as pd import numpy as np # 你的原始数据定义 data = {'x1': ["Yes", "Yes", "No"], 'x2': ["Yes",np.nan, "Yes"], 'x3': [np.nan, np.nan, "No"]} df = pd.DataFrame(data, columns = ['x1', 'x2', 'x3']) # 新增Total列,按行统计非NaN值数量 df['Total'] = df.count(axis=1) # 打印结果 print(df)
运行后你会看到和你期望完全一致的输出:
x1 x2 x3 Total 0 Yes Yes NaN 2 1 Yes NaN NaN 1 2 No Yes No 3
小细节说明
df.count(axis=1)是核心:这个方法会按行(axis=1)统计非缺失值的数量,它会自动跳过所有NaN元素,完美匹配你的需求。- 如果没加
axis=1,默认是axis=0,会变成按列统计,这也是很多新手容易踩的小坑,记得加上就行~ - 要是之后你只想统计某几列的非NaN值,也可以指定列名,比如只统计x1和x2的话,写成
df[['x1','x2']].count(axis=1)就可以,灵活性拉满~
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

