CSVファイルに新しい列を追加する方法は?
2023-08-04 15:22:36
質問
私はいくつかの CSV ファイルには、次のようなものがあります。
Input
Name Code
blackberry 1
wineberry 2
rasberry 1
blueberry 1
mulberry 2
すべてのCSVファイルに新しいカラムを追加して、次のように表示させたい。
Output
Name Code Berry
blackberry 1 blackberry
wineberry 2 wineberry
rasberry 1 rasberry
blueberry 1 blueberry
mulberry 2 mulberry
今までのスクリプトはこれです。
import csv
with open(input.csv,'r') as csvinput:
with open(output.csv, 'w') as csvoutput:
writer = csv.writer(csvoutput)
for row in csv.reader(csvinput):
writer.writerow(row+['Berry'])
(Python 3.2)
しかし、出力では、スクリプトはすべての行をスキップし、新しいカラムにはBerryだけがあります。
Output
Name Code Berry
blackberry 1 Berry
wineberry 2 Berry
rasberry 1 Berry
blueberry 1 Berry
mulberry 2 Berry
どのように解決するのですか?
これは、何をすべきかについてのアイデアを与えるはずです。
>>> v = open('C:/test/test.csv')
>>> r = csv.reader(v)
>>> row0 = r.next()
>>> row0.append('berry')
>>> print row0
['Name', 'Code', 'berry']
>>> for item in r:
... item.append(item[0])
... print item
...
['blackberry', '1', 'blackberry']
['wineberry', '2', 'wineberry']
['rasberry', '1', 'rasberry']
['blueberry', '1', 'blueberry']
['mulberry', '2', 'mulberry']
>>>
編集、py3kでは
next(r)
回答を受け入れてくれてありがとうございます。ここにボーナス(あなたの作業スクリプト)があります。
import csv
with open('C:/test/test.csv','r') as csvinput:
with open('C:/test/output.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
row = next(reader)
row.append('Berry')
all.append(row)
for row in reader:
row.append(row[0])
all.append(row)
writer.writerows(all)
ご注意ください
-
は
lineterminator
のパラメータはcsv.writer
. デフォルトでは、このパラメータは に設定されています。'\r\n'
に設定されており、これがダブルスペースになる理由です。 -
を使うことで、すべての行を追加して一度に書き出すことができます。
で一発書き。
writerows
. ファイルが非常に大きい場合、これは しかし、通常のファイルであれば、I/Oが少ないので、この方が高速だと思います。 より少ない I/O であるため、より高速であると思います。 -
この投稿へのコメントで示されたように、この記事では を入れ子にするのではなく、2 つの
with
ステートメントを入れ子にする代わりに、同じ行で行うことができることに注意してください。open('C:/test/test.csv','r') as csvinput, open('C:/test/output.csv','w') as csvoutputで、次のようになります。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複