簡體   English   中英

Python 刪除由數據框列組成的列表列表中的外部引號

[英]Python remove outer quotes in a list of lists made from a data frame column

我有一個名為 positive_samples 的 Pandas 數據框,它有一個名為 Gene Class 的列,它基本上是一對存儲為列表的基因。 它看起來像下面

在此處輸入圖片說明

整個數據框看起來像這樣。

在此處輸入圖片說明 .

所以基因類列只是數據框中其他兩列的組合。 我使用如下所示的基因類列制作了一個列表。 這將獲取所有基因對列表並將它們整合到一個列表中。

   #convert the column to a list
   postive_gene_pairs = positive_samples["Gene Class"].tolist()

這是輸出。

在此處輸入圖片說明

現在每對都用雙引號括起來,這是我不想要的,因為我遍歷這個列表並使用 .loc 方法在另一個名為 new_expression 的數據框中定位這些對,該數據幀將它們作為這樣的索引

在此處輸入圖片說明

for positive_gene_pair in positive_gene_pairs:
    print(new_expression_df.loc[[positive_gene_pair],"GSM144819"])

這會引發一個關鍵錯誤。

在此處輸入圖片說明

並且這肯定是因為每對都包含額外的引號,因為當我實例化一個如下所示的列表時,沒有引號它工作得很好。

在此處輸入圖片說明

所以我的問題是如何刪除額外的引號以使其與 .loc 一起使用? 要創建一個如下所示的列表,但是來自數據框列?。

pairs = [['YAL013W','YBR103W'],['YAL011W','YMR263W']]

我嘗試了很多解決方法,如替換、剝離,但沒有一個對我有用,理想情況下它們適用於字符串,但我試圖讓它們在列表上工作,有什么簡單的解決方案嗎? 我只想有一個像這個對列表這樣的列表,它沒有額外的單引號或雙引號。

定義一個函數:

def listup(initlist):
    # Converting string to list 
    res = ini_list.strip('][').split(', ') 
    
    return res

從改變

postive_gene_pairs = positive_samples["Gene Class"].tolist()

postive_gene_pairs = positive_samples["Gene Class"].apply(listup).tolist()

首先將字符串列表轉換為列表:

import ast

postive_gene_pairs = positive_samples["Gene Class"].apply(ast.literal_eval).tolist()

然后刪除[]

for positive_gene_pair in positive_gene_pairs:
    print(new_expression_df.loc[[positive_gene_pair],"GSM144819"])

到:

for positive_gene_pair in positive_gene_pairs:
    print(new_expression_df.loc[positive_gene_pair,"GSM144819"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM