3

約 50 列を含む csv ファイルがありますが、必要なのは約 10 列だけです。その csv ファイルから必要な列を新しい csv ファイルに抽出できるようにしたいと考えています。

この投稿の一番の答えCSV ファイルの列を削除するには? それはまさに私が必要とすることをするように見えます。

しかし、これは私が毎日行う必要があることであり、大きな CSV ファイルを生成するシステムは、列を異なる順序でエクスポートできます。そのため、必要な列を番号ではなく名前で指定できるようにする必要があります。

以下は、CSV ファイルを示しています。

File1.csv

name, description, cost, image, date
ABC, "super, mega", 12.87, ./imagefile, "12/11/2012 08:12"

File2.csv

name, cost, date, description, image
SYZ, 43.98, "16/11/2012 09:16", "Some text, and such", ./image2.jpeg

名前、説明、および画像フィールドのみを保持したいのですが、コードを使用する場合 (上記の@S.Lottによる投稿から派生):

import csv
with open("source","rb") as source:
rdr= csv.reader( source )
with open("result","wb") as result:
    wtr= csv.writer( result )
    for r in rdr:
        wtr.writerow( (r[0], r[1], r[3]) )

最初のファイルでのみ機能し、2 番目のファイルでは機能しません。

4

2 に答える 2

1

DictReaderクラスを使用して読み込むと、インデックスの代わりに名前でフィールドを書き出すことができます。

于 2012-11-16T05:06:03.317 に答える
1

これにpandasを使用する利点は、ファイルを開いてさまざまな形式で保存し、列と行を変更するのが簡単になるだけでなく、必要に応じてデータを変更、計算、および操作できることです。

選択した列を含む csv ファイルを取得するのは簡単です。

import pandas as p

df = p.read_csv('File2.csv')  # reads your csv file as a table (dataframe object)

df2 = df[['cost', 'date']]    # selects two of the columns in your file

df2.to_csv('my_out.csv')      # saves again in csv format
于 2012-11-16T09:33:23.363 に答える