मैंने अपनी पंडों की सूची निम्नलिखित बनाई:

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

तो अब ऐसा दिखता है: 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]

जब मैंने अपने df के साथ कुछ प्रोसेसिंग और सामान किया, तो मैं कॉलम नामों को बदलना चाहता हूं।

मैं नामों के साथ टेक्स्टफाइल में पढ़ रहा हूं, जिसका मैं उपयोग करना चाहता हूं:

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

और अब मैंने यह कोशिश की:

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

लेकिन यह मुझे देता है > TypeError: unhashable type: 'list'

क्या किसी के पास इसका समाधान है?

0
Anja 30 मार्च 2020, 11:37

1 उत्तर

सबसे बढ़िया उत्तर

आप सही तरीके से शब्दकोश नहीं बना रहे हैं। यह केवल दोनों सूचियों को अद्वितीय key और value के रूप में उपयोग करके एक शब्दकोश बनाने की कोशिश कर रहा है जो आपको एक त्रुटि दे रहा है, क्योंकि सूचियां धोने योग्य नहीं हैं। आप यहां zip का उपयोग इसके आइटम को इंटरलीव करने के लिए कर सकते हैं और फिर एक शब्दकोश बना सकते हैं:

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)

या वैकल्पिक रूप से आप उपयोग कर सकते हैं:

df.columns = df.columns.str.rsplit('_',1).str[0].str.cat(layernames,sep='_')
1
yatu 30 मार्च 2020, 08:48