2017-04-06 30 views
0

2つのtsvファイルがあり、それぞれにヘッダーとカラムがあります。ファイルAはヘッダを持っています:SampleID & RawReads、FileBはヘッダを持っています:SampleID & ReadsPost。 FileAにReadsPostを追加して、データが正しいSampleIDとなるようにします。1つのtsvファイルから別のtsvファイルへの列の追加(unix)

私の当初の計画では、キーがsampleIDsことで辞書を使用してPythonでこれを実行することでした。しかし、bashでこれを行う簡単な方法が必要です!

助けがあれば助かります。

+0

ありがとうございます!どちらの答えも完璧に働いた。私はpandasオプションを使用したので、RawReadsとReadsPostでグループ化された棒グラフをmatplotlibで構築することができました。 –

答えて

0

使用joinと参加(または結合の任意の他のタイプ)完全外部の操作を行います。

>cat test.txt test2.txt 
SampleID RawReads 
1   18 
2   15 
5   21 
7   7 
SampleID  ReadsPost 
1   yes 
3   no 
4   yes 
5   yes 

> join -a1 -a2 test.txt test2.txt 
SampleID RawReads ReadsPost 
1 18 yes 
2 15 
3 no 
4 yes 
5 21 yes 
7 7 

注:-a引数プリント配線接合されていないファイルから。完全な外部結合を行うには、例示されているように、両方のファイルの行を出力します。

0

pandas.read_csvを使用してデータをロードする場合は、タブ区切りシートにsep='\t'を設定する必要があります。 2つのDataFramesをロードしたら、pandas.concatまたはpandas.mergeを使用できます。適切なリファレンスについては、PandasのドキュメントのMerge, join, and concatenateを参照してください。

さんは次のようになり、あなたの2 TSV」を言ってみましょう:

FILE1:

SampleID  RawReads 
1   18 
2   15  
5   21  
7   7  

FILE2:マージ使用

SampleID  ReadsPost 
1   yes 
3   no 
4   yes 
5   yes 

マージを実装するために使用することができます

2つのデータフレームにデータベーススタイルが結合されます。この例では、2つのDataFramesがSampleID列で一致していないことがわかります。両方のフレームからすべてのデータを取得したい場合は、outerを使用します。データを必要とする場合は、私たちが保持したいものに応じてrightまたはleftを使うことができます。ここにはすべてを保つための例があります。連結方式は、行または列のいずれかの軸に沿ってデータフレームを拡張するために使用することができる連結方式

を使用

df1 = pd.read_csv(file1, sep='\t') 
df2 = pd.read_csv(file2, sep='\t') 
merge_df = pd.merge(df1, df2, how='outer', on='SampleID') 
print(merge_df) 
    SampleID RawReads ReadsPost 
0   1  18.0  yes 
1   2  15.0  NaN 
2   5  21.0  yes 
3   7  7.0  NaN 
4   3  NaN  no 
5   4  NaN  yes 

。 SampleIDがあなたのインデックスであったとし、file2の値を列軸に沿ってfile1に連結したいとしましょう。例:

df1 = pd.read_csv(file1, sep='\t', index_col='SampleID') 
df2 = pd.read_csv(file2, sep='\t', index_col='SampleID') 
concat_df = pd.concat([df1, df2], axis=1) 
print(concat_df) 
      RawReads ReadsPost 
SampleID 
1    18.0  yes 
2    15.0  NaN 
3    NaN  no 
4    NaN  yes 
5    21.0  yes 
7    7.0  NaN 

私はパンダのドキュメントを読んだと言いました。それは非常に強力なライブラリであり、Pythonでデータを扱う素晴らしいイントロです。

関連する問題