2024-08-31

我有一個(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 序號文章作者發(fā)布日期1短篇小說 | 我的陪玩女友(全)[http://www.itdecent.cn/p/438...
    中年大叔閱讀 541評論 0 26
  • 帕金森的可怕你真的知道嗎 帕金森病是一種神經(jīng)退行性疾病,以不同的癥狀影響著患者的生活。它在患者和家人之間、社區(qū)之間...
    快樂無疆閱讀 60評論 0 0
  • 兩天沒有好好吃藥,今天腳腕子又有點(diǎn)熱熱的,脹脹的。 嗓子一入既往刀割似的。 想當(dāng)年新冠吞刀片那種痛,我沒體會到。因...
    北念南方閱讀 44評論 0 0
  • 每日一念:今天過后,你將涅槃重生,逆風(fēng)翻盤,這局是必勝局,你會越來越富有,越來越健康,越來越有錢。 每日一念:今天...
    尹小月閱讀 69評論 0 0
  • 1、一個(gè)人,最可怕的就是內(nèi)耗,別人的一句話,會拿出來反復(fù)咀嚼;過度地分析、思考以及自我否定。這種精神上的消耗,往往...
    執(zhí)劍飲烈酒閱讀 57評論 0 0

友情鏈接更多精彩內(nèi)容