需要过滤/消除第一个#n行,直到从一个更大的df (如df2显示)中出现"nan“符号。
main_df = {
'Courses':["Spark","Java","Python","Go"],
'Discount':[2000,2300,1200,2000],
'Pappa':[np.nan,np.nan,"2","ai"],
'Puppo':["Glob","Java","n","Godo"],
}
index_labels2=['r1','r6','r3','r5']
df2 = pd.DataFrame(main_df,index=index_labels2)我试过:
maino_df = main_df.loc[:, (main_df.iloc [0] != np.nan) & ((main_df.iloc [0,:] < 1000))]获得:
main_dfnew = {
'Courses':["Python","Go"],
'Discount':[1200,2000],
'Pappa':["2","ai"],
'Puppo':["n","Godo"],
}
index_labels2=['r3','r5']
df2 = pd.DataFrame(main_dfnew, index=index_labels2)但也要删除nan所在的列。
发布于 2022-02-14 10:51:09
IIUC,您想要删除第一行有NaNs,并保留所有行后的第一行没有NaNs?
注意:我假设这里是真实的NaNs,如果不首先使用replace或其他方法将其转换为NaN,或者进行比较以匹配数据以认为无效。
你可以用:
df3 = df2[df2.notna().all(1).cummax()]产出:
Courses Discount Pappa Puppo
r3 Python 1200 2 n
r5 Go 2000 ai Godo如果您只想删除带有NaNs的所有行,请使用dropna
df3 = df2.dropna(axis=0)https://stackoverflow.com/questions/71110607
复制相似问题