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ライブラリを使用しています:csvをインポートします
Pythonが初めてなので、どんな助けでも感謝します。ありがとう!
これは、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)
既存のファイルの値を実際に置き換えることはできません。代わりに、次のことが必要です。
また、既存のファイルを1行ずつ読み込み、新しいファイルに書き出して、値をその場で置き換えます。完了したら、両方のファイルを閉じ、元のファイルを削除して、新しいファイルの名前を変更します。
パンダと呼ばれる非常に強力なライブラリを使用できます。以下に例を示します。
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行目の[サイト]列の値を変更する場合は、次を実行します。
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)