私は情報を持つ2つのファイルを持っています。私はマージする必要があります/与えられた列内の同一の両方のファイルから行を結合します。パンダの2つのファイルをマージする
ファイルA:
#chr #start #end #gene #0 #strand
chrM 3307 4262 MT-ND1 0 +
chrM 4470 5511 MT-ND2 0 +
chrM 12337 14148 MT-ND5 0 +
ファイルB:私が試し
#chr #start #end #gene #0 #strand #e_chr #e_start #e_end #e_id #0 #strand
chr1 3307 4262 MT-ND1 0 + chr1 161423805 161424053 Larp7-Chip.MACS2_peak_9703 0 .
chr1 4470 5511 MT-ND2 0 + chr1 161429385 161429489 Larp7-Chip.MACS2_peak_9705 0 .
chr1 12337 14148 MT-ND5 0 + chr1 161427010 161427243 Larp7-Chip.MACS2_peak_9704 0 .
:
#chr #start #end #gene #0 #strand #e_chr #e_start #e_end #e_id #0 #strand
chr1 12337 14148 MT-ND5 0 + chr1 161427010 161427243 Larp7-Chip.MACS2_peak_9704 0 .
chr1 3307 4262 MT-ND1 0 + chr1 161423805 161424053 Larp7-Chip.MACS2_peak_9703 0 .
chr1 4470 5511 MT-ND2 0 + chr1 161429385 161429489 Larp7-Chip.MACS2_peak_9705 0 .
マイ結果出力は、(基本的にBがAファイルと同様にソートされたファイル)のようになります。 pandas.DataFrame.merge
を使用して次のようにしてください。
import pandas as pd
import numpy as np
FileA = pd.read_table("FileA.txt")
FileB = pd.read_table("FileB.txt")
results = FileA.merge(FileB, how='left', left_on='gene', right_on='gene')
results = results.dropna()
これは最初は機能していたようですが、一部の行がありません。ファイルAには19,000行、ファイルBには4,800行があります。しかし、私の出力ファイルは約4,800を持っていると思いますが、約3,8kしかありません。私は間違って何をしていますか?これを行う簡単な方法はありますか?私はPythonの初心者です。あなたの説明に続いて
は
これはあなたのファイルで '遺伝子' 内の実際の値に依存します。私は、ファイルを数行(例えばそれぞれ20個)に減らし、もう一度見てみることをお勧めします。問題が解決しない場合は、データを転記してください。 – tfv
私はTeamtreehouseでPythonコースを終えました。構文は問題ではありません。私の仕事には、タブで区切られたファイル処理がたくさん含まれています。これは通常Rで行います。私はPandasを使って同じことをPythonでやろうとしています。問題ありますか? @tfv私はそれにショットを与えます – System
あなたは '.dropna()'でいくつのrecsをドロップしていますか?私はそこから始めるだろう。 – siegerts