📜  在Python中更新 CSV 的列值

📅  最后修改于: 2022-05-13 01:54:18.866000             🧑  作者: Mango

在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()

输出: