Skip to content
Advertisement

How can i filter on column names part of which contain a value in a given list?

Not sure if this has been asked else where but i couldn’t find the relevant question if there was. I have a list of values e.g.:

codes = [6757,1234, 5674, 9990,1110,5678,4532,1123,3456,7865]

i then have colnames such as:

col1_6757, col_1234, col1_5432, col1_1110, amount_1110, etc

I would like to filter on the pandas dataframe such that i only retrieve those colnames that contain the values in code list..

i’ve tried:

data.loc[:, data.columns.str.contains(codes)]

but i get the error: TypeError: unhashable type: 'list'. How can i go about this?

Advertisement

Answer

Convert values to strings and join by | for regex OR:

data.loc[:, data.columns.str.contains('|'.join(map(str, codes)))]

Or use DataFrame.filter:

data.filter(regex='|'.join(map(str, codes)))
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement