我是 python 的初學者,我有一個可能很簡單的問題。我有一個“file.txt”,原則上可以有 n 個字串。
> file.txt
John
Rafa
Marta
...
n
這被加載到程式中:
with open('/media/names.txt') as f:
lines = f.read().splitlines()
現在,我從 csv 加載一個資料框,該資料框有一列(名稱為“識別符號”),其中包含許多名稱。
Registration = pd.read_csv('/media/Registration.csv',
sep='\t', header=0)
目標是為每個變數分別找到 n 個字串。例如,在這種情況下,我為串列中的第一個資料完成了它:
names_1 = Registration[Registration['Identifier'].str.contains(lines[1])]
print(names_1)
只保留以“John”作為識別符號的行。但是,我正在嘗試創建 n 個資料框,因為“file.txt”串列中有專案。
names_1 = Registration[Registration['Identifier'].str.contains(lines[1])]
names_2 = Registration[Registration['Identifier'].str.contains(lines[2])]
names_3 = Registration[Registration['Identifier'].str.contains(lines[3])]
names_n = Registration[Registration['Identifier'].str.contains(lines[n])]
但我有點卡住了,我不知道如何做這個回圈。誰來幫幫我?謝謝!
uj5u.com熱心網友回復:
從理論上講,您的問題的答案是區域變數存盤在可通過函式 locals() 訪問的字典中。因此,可以完全按照要求在回圈中生成變數。
for i, line in enumerate(lines):
locals()[f'names_{i}'] = Registration[Registration['Identifier'].str.contains(line)]
但是,僅僅因為您可以做到并不意味著您應該這樣做,以這種方式生成變數通常不是一個好主意。
問問自己,您將如何訪問第 n 個變數?您正走在一條會使您的資料難以處理的道路上。更好的方法是使用像字典或串列這樣的資料結構來輕松跟蹤它。
names = []
for line in lines:
names.append(Registration[Registration['Identifier'].str.contains(line)])
還要注意第一個索引是 0,而不是 1。
uj5u.com熱心網友回復:
Python 串列索引從 0 開始。
嘗試使用這樣的 for 回圈:
for i in range(len(lines)):
names = Registration[Registration['Identifier'].str.contains(lines[i])]
但是你需要保持names. 也許在一個串列中:
name_list = []
for i in range(len(lines)):
names = Registration[Registration['Identifier'].str.contains(lines[i])]
name_list.append(names)
print(name_list)
嘗試這個!享受編碼!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372048.html
上一篇:將資料從文本檔案轉換為元組
