简体   繁体   English

pandas dropna() 仅当在第一行 NaN 值中时

[英]pandas dropna() only if in first row NaN value

I have a dataframe like the following我有一个如下所示的数据框

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

and I would like to remove all columns that have in their first row a NaN value.并且我想删除第一行中具有 NaN 值的所有列。

So the output should be:所以输出应该是:

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

So in this case, only the second column is removed since the first element was a NaN value.因此,在这种情况下,由于第一个元素是 NaN 值,因此只删除了第二列。 Hence, dropna() is based on a condition.. any idea how to handle this?因此, dropna() 是基于一个条件......知道如何处理这个吗? Thx!谢谢!

If values are np.nan and not string NaN ( else replace them ), you can do:如果值是np.nan而不是字符串NaN否则替换它们),您可以执行以下操作:

Input:输入:

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

Solution:解决方案:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM