35

CSV ファイルの列の特定の値を変更する方法が必要です。たとえば、次の CSV ファイルがあります。

"Ip","Sites"
"127.0.0.1",10
"127.0.0.2",23
"127.0.0.3",50

行「127.0.0.2」の値23を30に変更する必要があります。

私はcsvライブラリを使用しています:import csv

4

4 に答える 4

59

これは、csv ファイルを開き、メモリ内の値を変更してから、変更をディスクに書き戻すソリューションです。

r = csv.reader(open('/tmp/test.csv')) # Here your csv file
lines = list(r)

行の内容:

[['Ip', 'Sites'],
 ['127.0.0.1', '10'],
 ['127.0.0.2', '23'],
 ['127.0.0.3', '50']]

値の変更:

lines[2][1] = '30'

行の内容:

[['Ip', 'Sites'],
 ['127.0.0.1', '10'],
 ['127.0.0.2', '30'],
 ['127.0.0.3', '50']]

あとはファイルに書き戻すだけです

writer = csv.writer(open('/tmp/output.csv', 'w'))
writer.writerows(lines)
于 2012-06-14T13:15:59.633 に答える
24

pandas という非常に強力なライブラリを使用できます。これが例です。

import pandas as pd
df = pd.read_csv("test.csv")
df.head(3) #prints 3 heading rows

出力:

    Ip  Sites
0   127.0.0.1   10
1   127.0.0.2   23
2   127.0.0.3   50

ここで、1 行目の [Sites] 列の値を変更する場合は、次を実行します。

df.set_value(1, "Sites", 30)

'Ip' が 127.0.0.2 に等しいすべての値を変更する場合は、次を実行します。

df.loc[df["Ip"]=="127.0.0.2", "Sites"] = 30

最後に、値を保存するには:

df.to_csv("test.csv", index=False)
于 2017-02-21T13:27:53.207 に答える
18

既存のファイルの値を実際に置き換えることはできません。代わりに、次のことを行う必要があります。

  1. 既存のファイルを読み込む
  2. メモリ内のファイルを変更する
  3. 新しいファイルを書き出す (既存のファイルを上書きする)

また、既存のファイルを 1 行ずつ読み込み、その場で値を置き換えながら新しいファイルに書き出すこともできます。完了したら、両方のファイルを閉じ、元のファイルを削除して、新しいファイルの名前を変更します。

于 2012-06-14T13:15:39.173 に答える