首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对df进行切片/索引

问如何对df进行切片/索引
EN

Stack Overflow用户
提问于 2022-02-14 10:45:40
回答 1查看 40关注 0票数 1

需要过滤/消除第一个#n行,直到从一个更大的df (如df2显示)中出现"nan“符号。

代码语言:javascript
复制
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)

我试过:

代码语言:javascript
复制
  maino_df = main_df.loc[:, (main_df.iloc [0] != np.nan) & ((main_df.iloc [0,:] < 1000))]

获得:

代码语言:javascript
复制
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所在的列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-14 10:51:09

IIUC,您想要删除第一行有NaNs,并保留所有行后的第一行没有NaNs?

注意:我假设这里是真实的NaNs,如果不首先使用replace或其他方法将其转换为NaN,或者进行比较以匹配数据以认为无效。

你可以用:

代码语言:javascript
复制
df3 = df2[df2.notna().all(1).cummax()]

产出:

代码语言:javascript
复制
   Courses  Discount Pappa Puppo
r3  Python      1200     2     n
r5      Go      2000    ai  Godo

如果您只想删除带有NaNs的所有行,请使用dropna

代码语言:javascript
复制
df3 = df2.dropna(axis=0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71110607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档