2つのCSVファイルを結合します。1つは可変数の列を持ちます


-1

私はここで言及したものと同様の問題を抱えています:

2つのCSVファイルを結合する方法は?

両方のファイルの最初のフィールドを結合キーとして使用して、ファイルを結合したいです。

違いは、2つのファイルのいずれかでは、列の数がレコードごとに異なる場合があることです(tracerouteが含まれ、列ごとに1つのipが含まれているため、長さが変わる場合があります)。

(結合キーはIPアドレスです。つまり、両方のファイルの最初の列です。)


他のファイルの列数は固定されていますか?
datatoo

1
あなたが達成したいことのより良い説明を教えていただけますか?投稿のフォーマットが不十分で、自分が何を持っているか、特に希望する出力が何であるかを明記していません。
slhck

回答:


0

私はあなたの質問を正しく読んだことを知りません。これを行うには、Pythonの優れたcsvモジュールを使用します。

例:

ファイルする

a,x
b,y
c,z

ファイルb

l,m
n,p
k,m

コード-join.py

import csv
source1= csv.reader( open("a","rb") )
source2= csv.reader( open("b","rb") )
dest= csv.writer( open("c","wb") )
for row in source1:
    result=row[1]
    dest.writerow(result)
for row in source2:
    result=row[1]
    dest.writerow(result)

私はそれがOPが探しているものではないと思います、彼は最初の列のJOINに基づいて各ファイルの2番目の列を結合したいと思うと思います。
slhck

1

SQLiteを使用してこの操作を行うことをお勧めします。SQLiteのインストールは非常に簡単で、ルート権限は不要で、すべてのプラットフォームで適切に機能します。

手順:

  1. 両方のCSVファイルをSQLite DBにインポートします。
  2. SQLを使用して結合します。
  3. 出力をCSVファイルとして保存します。

sqlite3

.separator "、"

テーブルtest1(col1テキスト、col2テキスト)を作成します。

.import test1.csv test1

テーブルtest2(col1テキスト、col2テキスト)を作成します。

.import test3.csv test1

.mode csv

.output outfile.csv

test1からa.col1、a.col2、b.col2を選択し、a.col1 = b.col1にtest2 bを結合します。

.output stdout


0

私は実際にデータベースを使用します。MS AccessまたはOpenOffice Baseを使用してみてください。CSVファイルをインポートするには、スプレッドシート(​​Excelなど)を一時的に使用する必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.