我有一個(gè)CSV文件,里面有十萬個(gè)個(gè)體組合及它們之間的親緣關(guān)系系數(shù),我還有一個(gè)txt文件,里面是100多對個(gè)體組合以及它們之間的親緣關(guān)系,現(xiàn)在我想用代碼從CSV文件中找到將這100多對個(gè)體之間的親緣關(guān)系系數(shù),并生成一個(gè)excel表格,第一列為個(gè)體1的序號,第二列為個(gè)體2的序號,第三列為兩個(gè)個(gè)體之間的親緣關(guān)系,第四列為兩個(gè)個(gè)體之間的親緣關(guān)系系數(shù),其中在尋找的過程中,個(gè)體1和個(gè)體2的順序可以忽略,只要是這兩對個(gè)體即可
import pandas as pd
# 讀取CSV文件和Excel文件
csv_file = 'coffe.csv'
csv_data = pd.read_csv(csv_file)
excel_file = 'relationship_result.xlsx'
pairs_data = pd.read_excel(excel_file)
# 確保列名一致
id1_col = 'id1' # 替換為你的Excel文件中的列名
id2_col = 'id2' # 替換為你的Excel文件中的列名
relation_col = 'relationship' # 替換為你的Excel文件中的列名
# 將ID轉(zhuǎn)為字符串,去除空格并轉(zhuǎn)為小寫,確保格式一致
csv_data['id1'] = csv_data['id1'].astype(str).str.strip().str.lower()
csv_data['id2'] = csv_data['id2'].astype(str).str.strip().str.lower()
pairs_data[id1_col] = pairs_data[id1_col].astype(str).str.strip().str.lower()
pairs_data[id2_col] = pairs_data[id2_col].astype(str).str.strip().str.lower()
# 將Excel中的對列表轉(zhuǎn)換為Python列表
pairs = pairs_data[[id1_col, id2_col, relation_col]].values.tolist()
# 打印所有對,檢查是否正確讀取了Excel文件
print("All pairs from Excel:", pairs)
# 創(chuàng)建一個(gè)空的結(jié)果DataFrame
result_df = pd.DataFrame(columns=['ID1', 'ID2', 'RELATION', 'KIN'])
# 遍歷每對個(gè)體組合
for pair in pairs:
individual1, individual2, relation = pair[0], pair[1], pair[2] # 從Excel文件中提取數(shù)據(jù)
# 打印當(dāng)前處理的個(gè)體組合
print(f"Processing pair: {individual1}, {individual2}")
# 在CSV數(shù)據(jù)中查找匹配的個(gè)體組合以獲取親緣關(guān)系系數(shù)
match = csv_data[((csv_data['id1'] == individual1) & (csv_data['id2'] == individual2)) |
((csv_data['id1'] == individual2) & (csv_data['id2'] == individual1))]
if not match.empty:
# 如果找到匹配的行,獲取親緣關(guān)系系數(shù)
kinship_coef = match['coeff_value'].values[0]
print(f"Match found: {kinship_coef}")
# 將結(jié)果添加到結(jié)果DataFrame中
result_df = result_df.append({
'ID1': individual1,
'ID2': individual2,
'RELATION': relation, # 使用Excel文件中的親緣關(guān)系
'KIN': kinship_coef
}, ignore_index=True)
else:
# 如果沒有找到匹配項(xiàng),打印信息
print(f"No match found for pair: {individual1}, {individual2}")
# 將結(jié)果保存為Excel文件
result_df.to_excel('output.xlsx', index=False)
#創(chuàng)建Python腳本:
nano check_pairs.py
#復(fù)制并粘貼Python代碼
#保存并退出:
按 Ctrl + O,然后按回車鍵保存文件。
按 Ctrl + X 退出編輯器。
#運(yùn)行腳本:
python3 check_pairs.py