删除包含NaN

时间:2019-08-31 06:10:44

标签: python pandas dataframe nan

在清理时间序列的Pandas数据框之前,我想在某些列中删除包含NaN的顶部行。

我想遍历数据帧的开头,并删除满足条件的行,其中列为NaN。我在下面的数据框称为“火车”,并包含两列-“日期”和“最高温度(摄氏度)”。我将日期设置为索引。前20个奇数行在“最高温度(摄氏度)”中包含NaN

#Drop NaN values at start of dataframe

for date,row in train.iterrows():
  print(date)
  if train.loc[date,'Maximum temperature (Degree C)']==np.nan:
      train.drop(index=date, inplace=True)
  else:
    break

我希望代码从数据帧的开头删除行,但是我的if语句不会选择NaN,因此它会在第一行之后中断。

1 个答案:

答案 0 :(得分:2)

您可以按以下方式使用first_valid_index()来代替拖放操作

import pandas as pd 

# dataframe  
df = pd.DataFrame({"A":[None, None, 2, 4, 5], 
                   "B":[None, None, None, 44, 2], 
                   "C":[None, None, None, 1, 5]}) 


df.C.first_valid_index()

输出:

3

然后使用

df.loc[2:]

OR

df[df.C.first_valid_index():]

输出:

     A    B    C
3   4.0  44.0  1.0
4   5.0  2.0   5.0

希望这会有所帮助