在清理时间序列的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
,因此它会在第一行之后中断。
答案 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
希望这会有所帮助