代码之家  ›  专栏  ›  技术社区  ›  Mooni

Python:从dataframe中选择多个相似的列

  •  1
  • Mooni  · 技术社区  · 7 年前

    我有一个数据帧:

    df:
    
        a21   b21   c21  a22   b22  a23  b23
    1    2    2      2    4     5    7    7
    2    2    2      2    4     5    7    7
    3    2    2      2    4     5    7    7
    4    2    2      2    4     5    7    7
    5    2    2      2    4     5    7    7
    

    我只想选择具有 '21' '23' 这样我的输出是:

    df_output:
    
        a21   b21   c21   a23  b23
    1    2    2      2     7    7
    2    2    2      2     7    7
    3    2    2      2     7    7
    4    2    2      2     7    7
    5    2    2      2     7    7
    

    我可以用以下代码来实现这一点:

    df_21 = (df.loc[:, df.filter(like='21').columns])    
    df_23 = (df.loc[:, df.filter(like='23').columns])
    

    然后我可以合并 df_21 df_23

    2 回复  |  直到 7 年前
        1
  •  2
  •   MaxU - stand with Ukraine    7 年前

    我们可以使用 DataFrame.filter() 方法:

    In [38]: df.filter(regex=r'21|23')
    Out[38]:
       a21  b21  c21  a23  b23
    1    2    2    2    7    7
    2    2    2    2    7    7
    3    2    2    2    7    7
    4    2    2    2    7    7
    5    2    2    2    7    7
    

    In [45]: df.loc[:, df.columns.str.contains(r'21|23')]
    Out[45]:
       a21  b21  c21  a23  b23
    1    2    2    2    7    7
    2    2    2    2    7    7
    3    2    2    2    7    7
    4    2    2    2    7    7
    5    2    2    2    7    7
    
        2
  •  0
  •   Alexander    7 年前

    您可以使用条件列表理解:

    targets = ['21', '23']
    df[[col for col in df if any(target in col for target in targets)]]