1

2 つの .csv ファイルheaders.csvcorrected.csv. にheaders.csvはすべてのヘッダーがあり、corrected.csv整理されたデータの集まりにすぎません。

headers.csv:           
displacement, load, cputime, ...

corrected.csv:            
-990.478170,-0.000026,15:08:06, ...              
-990.038170,-0.000026,15:08:06, ...

The end goal is to be like this example:      
displacement,load,cputime, ...          
-990.478170,-0.000026,15:08:06, ...              
-990.038170,-0.000026,15:08:06, ...

私が持っているもの:

headers = [x for x in csv.reader(open('headers.csv', 'rb'))]
writer = csv.writer(open('merged.csv', 'wb'))
writer.writerow(headers)
for row in csv.reader(open('corrected.csv', 'rb')):
    writer.writerow(row)

ただし、結果"['displacement', 'load', 'cputime', ...]"はすべて列 A に書き込まれますが、列 A の変位、列 B の負荷、列 C の cputime などが必要です。また、を取り除きたい', ", [], and whitespaceので、最終結果は私の例とまったく同じですその上。前もって感謝します!

4

4 に答える 4

2

Pythonを使用してファイルを連結するのはやり過ぎのようです-

cat headers.csv corrected.csv > merged.csv

何らかの理由で Python を使用する必要がある場合、または Python を使用したい場合は、Jon Clements が正しい考えを持っています。

于 2012-08-02T21:37:57.337 に答える
2

コンマで区切られた列名を持つ単一の行があると仮定して、次を試してください。headers = next(csv.reader(open('headers.csv')))

于 2012-08-02T21:35:27.557 に答える
1

csv モジュールから複数のファイルがあるという事実を隠したいだけです。

import csv

def cat(*files):
    for f in files:
        with open(f) as fobj:
            for line in fobj:
                yield line

writer = csv.writer(open('merged.csv', 'wb'))
for row in csv.reader(cat('headers.csv', 'corrected.csv')):
    writer.writerow(row)
于 2012-08-03T08:57:37.790 に答える
1

最初の行では、headers.csv のすべての行を含むリスト (理解リスト) を作成しています。そのため、[] などがあります。

これを試してみてください(私の心の上から):

headers = csv.reader(open('headers.csv', 'rb'))[0]

最初の行のみを返す必要があります。

于 2012-08-02T21:38:19.240 に答える