Python中pandas dropna未移除DataFrame的NaN值,该如何解决?
解决Pandas dropna未移除NaN值的问题
我来帮你搞定这个问题——你遇到的情况其实是Pandas里一个非常常见的小细节坑!
为什么你的代码没生效?
df.dropna(subset=["Deviation from Partisanship"]) 这行代码的作用是生成一个移除了指定列NaN值的新DataFrame对象,但它默认不会直接修改原来的df。你没有把这个新生成的结果重新赋值给df,也没使用inplace=True参数来原地修改原数据,所以原来的数据集完全没变化,NaN自然还留在里面。
两种彻底移除NaN的方法
方法1:将处理后的结果重新赋值给原变量
这是最推荐的方式(避免原地修改带来的意外问题):
import pandas as pd df = pd.read_excel('sec3_data.xlsx') # 把移除NaN后的新DataFrame存回df df = df.dropna(subset=["Deviation from Partisanship"]) # 现在检查唯一值就不会有NaN了 print(df['Deviation from Partisanship'].unique())
方法2:使用inplace=True原地修改原DataFrame
如果你确实想直接修改原数据,可以添加这个参数:
import pandas as pd df = pd.read_excel('sec3_data.xlsx') # 直接在原df上移除指定列的NaN值 df.dropna(subset=["Deviation from Partisanship"], inplace=True) print(df['Deviation from Partisanship'].unique())
验证移除效果
你可以用下面的代码确认NaN是否被完全移除:
# 检查指定列剩余的NaN数量,应该返回0 print(df['Deviation from Partisanship'].isna().sum())
内容的提问来源于stack exchange,提问作者Asra Khalid
相关产品推荐
相关产品推荐

