问题的提出和解决方案概述
在这篇文章中,你将学习如何用Python向CSV文件添加新的列。
问题是。我们如何编写Python代码来向CSV文件添加新的列呢?
我们可以通过以下方法之一来完成这项任务。
准备工作
在进行任何数据操作之前,需要安装一(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列的方法应该给你足够的信息来选择最适合你编码要求的方法。
祝您好运,编码愉快!