通过过滤多个列(list或base.Index)pandas来创建一个新的数据帧

时间:2017-11-21 09:34:30

标签: python pandas

我注意到有很多关于这个主题的问题。 到现在为止,我发现了一些我需要的东西:

newdf = df[df[df.columns].isin(['list','of','values'])] 

但是这个方法删除了df.columns中不存在的所有值,保持相同的df.shape

我需要的是这样的事情:

newdf = df[df[df.columns[1:]].isin(['val1','val3','val7'])] 


 df                      newdf                       
 col1  col2   col3       col1  col2  col3
 A     val1   val5       A     val1  val5 
 B     val2   val2       C     val3  val3
 C     val3   val3       D     val4  val7
 D     val4   val7 

1 个答案:

答案 0 :(得分:0)

IIUIC,您需要any

In [252]: df[df[df.columns[1:]].isin(['val1','val3','val7']).any(1)]
Out[252]:
  col1  col2  col3
0    A  val1  val5
2    C  val3  val3
3    D  val4  val7