如何在CSV中增加一列

1,342 阅读3分钟

问题的提出和解决方案概述

在这篇文章中,你将学习如何用Python向CSV文件添加新的列。

💬 问题是。我们如何编写Python代码来向CSV文件添加新的列呢?

我们可以通过以下方法之一来完成这项任务。

  • 方法1:用默认值添加一列
  • 方法2:用计算值添加一列
  • 方法3:使用计算值的Lambda添加一列
  • 方法4:使用以下方法添加一个列 assign()添加一个带有指定值的列

准备工作

在进行任何数据操作之前,需要安装一(1)个新库。

  • Pandas 库可以实现对DataFrame的访问。

要安装这个库,请导航到IDE终端。在命令提示符下($),执行下面的代码。对于本例中使用的终端,命令提示符是一个美元符号($)。你的终端提示可能不同。

$ pip install pandas

点击键盘上的<Enter> 键,开始安装过程。

如果安装成功,终端上会显示一条信息,表明这一点。

在每个代码片段的顶部添加以下代码。这个代码段将使本文中的代码运行无误。

import pandas as pd

💡 注意:要跟上进度,请点击这里下载Finxter CSV文件,并将此文件移至当前工作目录。


方法1:添加一个带有默认值的列

在这个例子中,添加了一个新的列,并分配了一个单一的默认值为0 (0)。

df = pd.read_csv('finxter.csv', usecols=['FID', 'First_Name', 'Last_Name', 'Recurring', 'Taxes'])
df['Total_Chrgs'] = 0
df.to_csv('finxter1.csv', index=False)

这段代码读入了现有的finxter.csv 文件,为了简洁起见将其精简为几列,并将其保存为一个DataFrame。

添加了一个新的DataFrame列Total_Chrgs ,并为每个条目分配一个默认值0。结果保存到finxter1.csv

输出(片段) index=True

这个例子设置index=False ,当写到CSV文件时,忽略索引值。如果这被设置为 **index=True**,文件就会显示一个索引列,如下图所示。

输出(片段,索引=False

将此设置为 **index=False**就能得到我们想要的输出:没有额外的索引列。

💡 注意:出于测试目的,我们建议将内容写入一个新的CSV文件,不要覆盖原始文件。


方法2:添加一个带有计算值的列

在这个例子中添加了一个新的列,并对每个条目进行了集合计算和分配。

df = pd.read_csv('finxter.csv', usecols=['FID', 'First_Name', 'Last_Name', 'Recurring', 'Taxes'])
df['Total_Chrgs'] = round(df['Recurring'] * (df['Taxes']/100) + df['Recurring'], 2)
df.to_csv('finxter2.csv', index=False)

这段代码读入现有的finxter.csv 文件,为了简洁起见,将其精简为几列,并将其保存为一个DataFrame。

增加了一个新的列Total_Chrgs ,并对每个条目进行了计算。计算结果被四舍五入到小数点后两位,并保存到finxter2.csv

输出(片段)


方法3:使用带有计算值的Lambda添加一列

在这个例子中,添加了一个新的列,并使用Lambda对每个条目进行了集合计算和分配!

df = pd.read_csv('finxter.csv', usecols=['FID', 'First_Name', 'Last_Name', 'Recurring', 'Taxes'])
df['Total_Chrgs'] = df.apply(lambda row: round(row['Recurring'] * (row['Taxes']/100) + row['Recurring'], 2), axis=1)
df.to_csv('finxter3.csv', index=False) 

💡一个Finxter的最爱!

这段代码读入了现有的finxter.csv 文件,为简洁起见将其精简为几列,并将其保存为一个DataFrame。

一个新的列Total_Chrgs ,一个Lambda对每个条目进行计算,四舍五入到小数点后两位。输出保存到finxter3.csv

输出(片段)


方法4:使用assign()添加一个带有指定值的列

在这个例子中,一个新的列被添加,被排序,并且 assign()用来为前四(4)条记录设置新的值。

df = pd.read_csv('finxter.csv', usecols=['FID', 'First_Name', 'Last_Name', 'Recurring', 'Taxes'])
df.sort_values(by=['Recurring'], ascending=False, inplace=True)
df = df.head(4)
df = df.assign(Total_Chrgs=[12.98, 12.98, 11.98, 10.98])
df.to_csv('finxter4.csv', index=False) 

这段代码读入现有的finxter.csv 文件,为简洁起见将其精简为几列,并将其保存为一个DataFrame。

然后,根据Recurring ,对DataFrame进行降序排序,前四(4)行返回(df.head(4))。这些行被分配了在 assign()列表参数中显示的值。输出保存到finxter4.csv

输出(片段)


摘要

这五(4)种添加DataFrame列的方法应该给你足够的信息来选择最适合你编码要求的方法。

祝您好运,编码愉快!