在Python中更新 CSV 的列值
先决条件:熊猫
在本文中,我们将讨论更新列值的方法。更新 CSV 的任何列值的最佳和最优方法是使用 Pandas 库和 DataFrame 函数。
正在使用的 CSV 文件的链接 – 单击此处
方法一
方法
- 导入模块
- 打开 CSV 文件并读取其数据
- 查找要更新的列
- 使用 to_csv()函数更新 CSV 文件中的值
to_csv() 方法在输出返回到文件时将数据帧转换为 CSV 数据,它以文件对象或文件名作为参数,并应提及index=False以便索引不会写入 CSV 文件。但是这种方法非常繁琐,当你想更新多次出现的相似值时,也不可靠。
更新前文件中的详细信息:
例子:
Python3
# importing the pandas library
import pandas as pd
# reading the csv file
df = pd.read_csv("AllDetails.csv")
# updating the column value/data
df.loc[5, 'Name'] = 'SHIV CHANDRA'
# writing into the file
df.to_csv("AllDetails.csv", index=False)
print(df)
Python3
# importing the pandas library
import pandas as pd
# reading the csv file
df = pd.read_csv("AllDetails.csv")
# updating the column value/data
df['Status'] = df['Status'].replace({'P': 'A'})
# writing into the file
df.to_csv("AllDetails.csv", index=False)
print(df)
Python3
import csv
op = open("AllDetails.csv", "r")
dt = csv.DictReader(op)
print(dt)
up_dt = []
for r in dt:
print(r)
row = {'Sno': r['Sno'],
'Registration Number': r['Registration Number'],
'Name': r['Name'],
'RollNo': r['RollNo'],
'Status': 'P'}
up_dt.append(row)
print(up_dt)
op.close()
op = open("AllDetails.csv", "w", newline='')
headers = ['Sno', 'Registration Number', 'Name', 'RollNo', 'Status']
data = csv.DictWriter(op, delimiter=',', fieldnames=headers)
data.writerow(dict((heads, heads) for heads in headers))
data.writerows(up_dt)
op.close()
更新后详情:
方法二:
方法
- 导入模块
- 打开csv文件并读取其数据
- 查找要更新的列
- 使用 replace()函数更新 csv 文件中的值
当我们必须更新多次发生的数据时,replace() 方法很有用。我们只需要指定列名,并需要将值作为字典传递到replace()方法中,该方法以键值对的形式,键将具有列的先前数据,值将具有要更新的数据。
在更新列数据/值之前:
例子:
蟒蛇3
# importing the pandas library
import pandas as pd
# reading the csv file
df = pd.read_csv("AllDetails.csv")
# updating the column value/data
df['Status'] = df['Status'].replace({'P': 'A'})
# writing into the file
df.to_csv("AllDetails.csv", index=False)
print(df)
更新列数据/值后:
方法三:
在这种方法中,我们使用了 csv 模块,这是一个专门为读取、写入和更新 csv 文件而集中创建的模块。
方法:
- 导入模块
- 读取数据作为字典
- 更新所需的列值,将其存储为字典列表
- 逐行插入
- 关闭文件。
更新前的文件:
程序:
蟒蛇3
import csv
op = open("AllDetails.csv", "r")
dt = csv.DictReader(op)
print(dt)
up_dt = []
for r in dt:
print(r)
row = {'Sno': r['Sno'],
'Registration Number': r['Registration Number'],
'Name': r['Name'],
'RollNo': r['RollNo'],
'Status': 'P'}
up_dt.append(row)
print(up_dt)
op.close()
op = open("AllDetails.csv", "w", newline='')
headers = ['Sno', 'Registration Number', 'Name', 'RollNo', 'Status']
data = csv.DictWriter(op, delimiter=',', fieldnames=headers)
data.writerow(dict((heads, heads) for heads in headers))
data.writerows(up_dt)
op.close()
输出: