Filter pandas dataframe by list

后端 未结 3 771
谎友^
谎友^ 2020-12-11 22:29

I have a dataframe that has a row called \"Hybridization REF\". I would like to filter so that I only get the data for the items that have the same label as one of the items

相关标签:
3条回答
  • 2020-12-11 23:00

    Update using reindex,

    df.reindex(collist, axis=1)
    

    and

    df.reindex(rowlist, axis=0)
    

    and both:

    df.reindex(index=rowlist, columns=collist)
    

    You can use .loc or column filtering:

    df = pd.DataFrame(data=np.random.rand(5,5),columns=list('ABCDE'),index=list('abcde'))
    
    df
              A         B         C         D         E
    a  0.460537  0.174788  0.167554  0.298469  0.630961
    b  0.728094  0.275326  0.405864  0.302588  0.624046
    c  0.953253  0.682038  0.802147  0.105888  0.089966
    d  0.122748  0.954955  0.766184  0.410876  0.527166
    e  0.227185  0.449025  0.703912  0.617826  0.037297
    
    collist = ['B','D','E']
    
    rowlist = ['a','c']
    

    Get columns in list:

    df[collist]
    

    Output:

              B         D         E
    a  0.174788  0.298469  0.630961
    b  0.275326  0.302588  0.624046
    c  0.682038  0.105888  0.089966
    d  0.954955  0.410876  0.527166
    e  0.449025  0.617826  0.037297
    

    Get rows in list

    df.loc[rowlist]
    
              A         B         C         D         E
    a  0.460537  0.174788  0.167554  0.298469  0.630961
    c  0.953253  0.682038  0.802147  0.105888  0.089966
    
    0 讨论(0)
  • 2020-12-11 23:05

    Suppose df is your dataframe, lst is our list of labels.

    df.loc[ df.index.isin(lst), : ]
    

    Will display all rows whose index matches any value of the list item. I hope this helps solve your query.

    0 讨论(0)
  • 2020-12-11 23:07

    Is there a numpy dataframe? I am guessing it is pandas dataframe, if so here is the solution.

    df[df['Hybridization REF'].isin(list)]
    
    0 讨论(0)
提交回复
热议问题