首页 > 解决方案 > 熊猫 dropna() 仅当在第一行 NaN 值时

问题描述

我有一个如下的数据框

df = [[1,'NaN',3],[4,5,'Nan'],[7,8,9]]
df = pd.DataFrame(df)

我想删除第一行中具有 NaN 值的所有列。

所以输出应该是:

df = [[1,3],[4,'Nan'],[7,9]]
df = pd.DataFrame(df)

所以在这种情况下,只有第二列被删除,因为第一个元素是 NaN 值。因此, dropna() 是基于一个条件..知道如何处理这个吗?谢谢!

标签: pythonpandasdataframe

解决方案


如果值是np.nan而不是字符串NaN否则替换它们),您可以执行以下操作:

输入:

df = [[1,np.nan,3],[4,5,np.nan],[7,8,9]]
df = pd.DataFrame(df)

解决方案:

df.loc[:,df.iloc[0].notna()] #assign back to your desired variable

   0    2
0  1  3.0
1  4  NaN
2  7  9.0

推荐阅读