0

I created my Pandas list the following:

id=[f'GeneID_region_{i}' for i in range(43)] value=[f'GeneValue_region_{i}' for i in range(43)] lst=[] for i in range(43): lst.append(id[i]) lst.append(value[i]) df=pd.DataFrame(index=lst).T 

So now it looks like: df(0, 86)

Empty DataFrame Columns: [GeneID_region_0, GeneValue_region_0, GeneID_region_1, GeneValue_region_1, GeneID_region_2, GeneValue_region_2, GeneID_region_3, GeneValue_region_3, GeneID_region_4, GeneValue_region_4, GeneID_region_5, GeneValue_region_5, GeneID_region_6, GeneValue_region_6, GeneID_region_7, GeneValue_region_7, GeneID_region_8, GeneValue_region_8, GeneID_region_9, GeneValue_region_9, GeneID_region_10, GeneValue_region_10, GeneID_region_11, GeneValue_region_11, GeneID_region_12, GeneValue_region_12, GeneID_region_13, GeneValue_region_13, GeneID_region_14, GeneValue_region_14, GeneID_region_15, GeneValue_region_15, GeneID_region_16, GeneValue_region_16, GeneID_region_17, GeneValue_region_17, GeneID_region_18, GeneValue_region_18, GeneID_region_19, GeneValue_region_19, GeneID_region_20, GeneValue_region_20, GeneID_region_21, GeneValue_region_21, GeneID_region_22, GeneValue_region_22, GeneID_region_23, GeneValue_region_23, GeneID_region_24, GeneValue_region_24, GeneID_region_25, GeneValue_region_25, GeneID_region_26, GeneValue_region_26, GeneID_region_27, GeneValue_region_27, GeneID_region_28, GeneValue_region_28, GeneID_region_29, GeneValue_region_29, GeneID_region_30, GeneValue_region_30, GeneID_region_31, GeneValue_region_31, GeneID_region_32, GeneValue_region_32, GeneID_region_33, GeneValue_region_33, GeneID_region_34, GeneValue_region_34, GeneID_region_35, GeneValue_region_35, GeneID_region_36, GeneValue_region_36, GeneID_region_37, GeneValue_region_37, GeneID_region_38, GeneValue_region_38, GeneID_region_39, GeneValue_region_39, GeneID_region_40, GeneValue_region_40, GeneID_region_41, GeneValue_region_41, GeneID_region_42, GeneValue_region_42] Index: [] [0 rows x 86 columns] 

After I did some processing and stuff with my df, I want to replace the column names.

I am reading in a Textfile with names, that I want to use:

with open('/home/anja/Schreibtisch/Master/ABA/layer2_names.txt') as f: layernames = [line.strip() for line in f.read().split('\n')] 

And now I tried this:

df.rename(columns={[f'GeneID_region_{i}' for i in range(43)]: ['GeneID_region_{i}' for i in layernames]}, inplace=True) 

But this gives me > TypeError: unhashable type: 'list'

Has someone a solution to this?

1 Answer 1

1

You're not creating a dictionary in the right way. This is just trying to create a dictionary using both lists as unique key and value which is giving you an error, since lists are not hashable. You can use zip here to interleave its items and then build a dictionary:

d = dict(zip([f'GeneID_region_{i}' for i in range(43)], [f'GeneID_region_{i}' for i in layernames])) df.rename(columns=d, inplace=True) 

Or alternatively you could use:

df.columns = df.columns.str.rsplit('_',1).str[0].str.cat(layernames,sep='_') 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.