首先,我在 Stackoverflow 上檢查了Q1、Q2、Q3,但它們都與我的問題沒有直接關系。我正在使用資料框,訂單對我來說很重要。
我正在創建一個虛擬資料框以更好地解釋我的問題。
data = {'seq': ['YSPNNIQHFHEEHLVHFVLAVLSLTTPPLLCVWNR','TLGTGSFGRVMLVHYAMKILDKVLQIEHTLNEKLVKLMVMEYVPGGEMFYDKPENLLIQVTDFGFAGFDY',
'EKIGEGTYGVVYKVAMKVSLQLIFEFLSMDLKKHKPQNLLILADFL']}
dummy_df = pd.DataFrame(data)
我的目的是按此字串的順序查找唯一字符。然后通過創建資料框來保存它們。
我的期望輸出:
['Y', 'S', 'P', 'N', 'I', 'Q', 'H', 'F', 'E', 'L', 'V', 'A', 'T', 'C', 'W', 'R']
['T', 'L', 'G', 'S', 'F', 'R', 'V', 'M', 'H', 'Y', 'A', 'K', 'I', 'D', 'Q', 'E', 'N', 'P']
['E', 'K', 'I', 'G', 'T', 'Y', 'V', 'A', 'M', 'S', 'L', 'Q', 'F', 'D', 'H', 'P', 'N']
實際上,我有兩個解決方案:
1)
unique_char = []
for c in dummy_df ['seq'][0]:
if not c in unique_char:
unique_char.append(c)
print(unique_char)
它可以作業,但通常我的行數超過 1000。當我設定將分別為每個回圈運行的 for 回圈結構時出現錯誤。然后我需要將此解決方案轉換為資料框。
2
from collections import defaultdict
dictionary = defaultdict(set)
for i in range(len(dummy_df['seq']):
for c in dummy_df ['seq'][i]:
if not c in dictionary[i]:
dictionary[i].add(c)
它適用于所有行,但結果不正確。
例如,對于 字典 [0](第一行)的解決方案 2 的輸出
{'A',
'C',
'E',
'F',
'H',
'I',
'L',
'N',
'P',
'Q',
'R',
'S',
'T',
'V',
'W',
'Y'}
它應該是
['Y', 'S', 'P', 'N', 'I', 'Q', 'H', 'F', 'E', 'L', 'V', 'A', 'T', 'C', 'W', 'R']
uj5u.com熱心網友回復:
您實際上可以通過字典按順序找到獨特的專案。
for i in data['seq']:
print(list(dict.fromkeys(i)))
['Y', 'S', 'P', 'N', 'I', 'Q', 'H', 'F', 'E', 'L', 'V', 'A', 'T', 'C', 'W', 'R']
['T', 'L', 'G', 'S', 'F', 'R', 'V', 'M', 'H', 'Y', 'A', 'K', 'I', 'D', 'Q', 'E', 'N', 'P']
['E', 'K', 'I', 'G', 'T', 'Y', 'V', 'A', 'M', 'S', 'L', 'Q', 'F', 'D', 'H', 'P', 'N']
您可以將串列理解添加到資料框中。
new_data = [list(dict.fromkeys(i)) for i in data['seq']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484920.html
上一篇:有人可以幫我解決這個問題嗎,需要創建函式將列總和加倍
下一篇:使用tkinterasksaveasfilename,如何將資料框字典保存到新的excel檔案中的單獨作業表中?
