2

Python v2.7.4 を使用:

次の CSV ファイルがあります。

Item Number,Item Description,List Price,QTY Available
2000-000-000-380,AC - CF/M Series Green For White Hood,299.99,3
2000-000-000-400,AC - CF/M Series Orange For Black Hood,299.99,3
2000-000-000-480,AC - CF/M Series Orange For White Hood,299.99,3

ファイルを次のように変更しようとしています:

Fulfillment,SKU,Qty
US,2000-000-300,3
US,2000-000-380,3
US,2000-000-400,3

これまでのところ、次のコードがあります。

import csv
import os

inputFileName = "temp_modified.csv"
outputFileName = os.path.splitext(inputFileName)[0] + "_pro.csv"

with open(inputFileName, "rb") as inFile, open(outputFileName, "wb") as outfile:
    r = csv.reader(inFile)    
    w = csv.writer(outfile)

    r.next()    
    w.writerow(['Fulfillment', 'SKU', 'Qty'])

    for row in r:
        w.writerow((row[0], row[3]))

このコードを使用すると、次の出力が得られます。

Fulfillment,SKU,Qty
2000-000-000-380,3
2000-000-000-400,3
2000-000-000-480,3

US を最初の列に挿入するにはどうすればよいですか? (参考までに、これらのcsvファイルには3行以上ありますが、スペースのために残りを省略しました。)

4

2 に答える 2

5

行にリテラル文字列を追加するだけです。

for row in r:
    w.writerow(('US', row[0], row[3]))
于 2013-05-01T15:20:59.903 に答える
2

多くの操作を行う場合は、 pandasライブラリcsvを確認することを強くお勧めします。それは多くのことをより簡単にします。あなたのコードは次のようになります

import pandas as pd

df = pd.read_csv("temp_modified.csv")
df["Fulfillment"] = "US"
df = df.rename_axis({"Item Number": "SKU", "QTY Available": "QTY"})
df = df[["Fulfillment", "SKU", "QTY"]]
df.to_csv("temp_modified_pro.csv", index=False)

いくつかの説明が続きます。まず、csv ファイルを a というオブジェクトに読み込みますDataFrame

>>> import pandas as pd
>>> df = pd.read_csv("temp_modified.csv")
>>> df
        Item Number                        Item Description  List Price  \
0  2000-000-000-380   AC - CF/M Series Green For White Hood      299.99   
1  2000-000-000-400  AC - CF/M Series Orange For Black Hood      299.99   
2  2000-000-000-480  AC - CF/M Series Orange For White Hood      299.99   

   QTY Available  
0              3  
1              3  
2              3  

次に、「フルフィルメント」という列を追加します。

>>> df["Fulfillment"] = "US"
>>> df
        Item Number                        Item Description  List Price  \
0  2000-000-000-380   AC - CF/M Series Green For White Hood      299.99   
1  2000-000-000-400  AC - CF/M Series Orange For Black Hood      299.99   
2  2000-000-000-480  AC - CF/M Series Orange For White Hood      299.99   

   QTY Available Fulfillment  
0              3          US  
1              3          US  
2              3          US  

次に、軸の名前を変更します。

>>> df = df.rename_axis({"Item Number": "SKU", "QTY Available": "QTY"})
>>> df
                SKU                        Item Description  List Price  QTY  \
0  2000-000-000-380   AC - CF/M Series Green For White Hood      299.99    3   
1  2000-000-000-400  AC - CF/M Series Orange For Black Hood      299.99    3   
2  2000-000-000-480  AC - CF/M Series Orange For White Hood      299.99    3   

  Fulfillment  
0          US  
1          US  
2          US  

必要な列を選択します。

>>> df = df[["Fulfillment", "SKU", "QTY"]]
>>> df
  Fulfillment               SKU  QTY
0          US  2000-000-000-380    3
1          US  2000-000-000-400    3
2          US  2000-000-000-480    3

最後に、追加のインデックス列 (左側の数字、行ラベル) を含めずに、csv に書き出します。

>>> df.to_csv("temp_modified_pro.csv", index=False)
>>> !cat temp_modified_pro.csv
Fulfillment,SKU,QTY
US,2000-000-000-380,3
US,2000-000-000-400,3
US,2000-000-000-480,3
于 2013-05-01T15:52:07.907 に答える