Python 使用字符串处理选择某些数据帧列

Python 使用字符串处理选择某些数据帧列,python,arrays,string,list,dataframe,Python,Arrays,String,List,Dataframe,我试图从满足特定条件的数据集中选择一组列。例如,我在dataframe中有以下列: ['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'] 列名中的每个尾随数字都将是唯一的标识符,而不管前缀是类别还是

我试图从满足特定条件的数据集中选择一组列。例如,我在dataframe中有以下列:

['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']

列名中的每个尾随数字都将是唯一的标识符,而不管前缀是
类别
还是
数值
。我想选择所有列,它们是
解决方案:

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']

解决方案:

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\u category\u 11
的列(例如,有两个下划线的列)?这就是
[-1]
的作用(选择最后一项)。拆分字符串,然后仅选择最后一项。顺便说一句,您也可以使用
.split(“”)
。更好的是
.rsplit(“”,1)
“string\u category\u 11”。rsplit(“”“)
通过使用
[-1]产生
[“string”,“category”,“11”]
,您正在选择该列表中的最后一项。这种逻辑是合理的,但是您如何处理名称为
string\u category\u 11
的列,例如有两个下划线的列?这就是
[-1]
的作用(选择最后一项)。拆分字符串,然后仅选择最后一项。顺便说一句,您可以使用
.Split(“_”
。更好的是
.rsplit(“”,1)
<代码>“string\u category\u 11”。rsplit(“\u”)产生
[“string”、“category”、“11”]
。通过使用
[-1]
,您正在选择该列表中的最后一项。