【问题标题】:Selecting certain dataframe columns with string processing使用字符串处理选择某些数据框列
【发布时间】:2020-07-12 14:24:00
【问题描述】:

我正在尝试从满足特定条件的数据集中选择一组列。因此,例如,我在数据框中有这些列:

['string_category_4', 'string_category_24', 'range_category_6',
  'range_category_17', 'int_numeric_21', 'string_category_15',
  'float_numeric_8', 'int_bool_19', 'int_bool_2']

列名中的每个尾随数字都将是一个唯一标识符,无论前缀如何,例如 categorynumeric。我想选择所有<=10 的列,所以它应该为我返回一个列表:

['string_category_4', 'range_category_6', 'float_numeric_8',
 'int_bool_2']

有没有一种方法可以进行字符串处理,或者更简单的方法来做到这一点?

【问题讨论】:

    标签: python arrays string list dataframe


    【解决方案1】:

    解决方案:

    columns = [
        'category_4', 'category_24', 'category_6',
        'category_17', 'numeric_21', 'category_15',
        'numeric_8', 'bool_19', 'bool_2'
    ]
    filtered_columns = [col for col in columns if int(col.rsplit('_')[-1]) <= 10]
    print(filtered_columns)
    

    输出:

    > ['category_4', 'category_6', 'numeric_8', 'bool_2']
    

    【讨论】:

    • 这个逻辑是合理的,但是您将如何处理名称为string_category_11 的列,例如有两个下划线的列?
    • 这就是[-1] 的用途(选择最后一项)。拆分字符串,然后仅选择最后一项。顺便说一句,您也可以使用.split("_")。更好的是.rsplit(''_", 1)"string_category_11".rsplit("_") 产生 ["string", "category", "11"]。通过使用[-1],您将选择该列表中的最后一项。
    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多