基于其他列在python中向csv文件添加一列

时间:2017-09-20 20:54:26

标签: python csv

我正在使用Python 3.6.2并拥有以下csv文件:

STATE,RATE,DEATHS
IA,4.2,166
NH,4.2,52
MA,4.3,309
CA,4.4,2169
CO,4.6,309
ID,4.6,106
NY,4.6,1087
VT,4.6,27
NJ,4.7,487

我正在尝试向文件中添加一个新列,其中我将rate列乘以deaths列。下表是我希望看到的结果。

STATE,RATE,DEATHS,NEW
IA,4.2,166,697.2
NH,4.2,52,218.2
MA,4.3,309,1328.7
CA,4.4,2169,9543.6
CO,4.6,309,1421.4
ID,4.6,106,487.6
NY,4.6,1087,5000.2
VT,4.6,27,124.2
NJ,4.7,487,2288.9

我试过寻找这个问题的答案,但找不到类似的东西。提前致谢。

4 个答案:

答案 0 :(得分:2)

使用pandas

orderData.pendingItem

答案 1 :(得分:1)

使用pandas库,这很简单:

import pandas as pd
df = pd.read_csv('filename.csv')
df['NEW'] = df['RATE'] * df['DEATHS']
# You can save over the old file, though I would suggest saving a new one 
# in case you make a mistake
df.to_csv('new_filename.csv') 

熊猫图书馆为我们提供了一些很酷的东西。首先,我们使用pd.read_csv()语句轻松解析csv。接下来,pandas DataFrame对象(这是变量df)允许我们使用键来访问和创建列,就像Python字典一样。当我们使用DataFrame中的列执行数学运算时,pandas库实际上对每列中的每个值执行操作,因此在我们的示例中,' RATE'中的索引0列乘以' DEATHS'的索引0。柱。

简而言之,如果您要在python中访问和操作类似电子表格的文件,pandas是一个功能强大且易于使用的库。

答案 2 :(得分:0)

file = open('test.csv', 'r')
lines = file.readlines()

# print new header
print(lines[0].strip() + ',NEWCOLUMN')

# loop through other lines starting from 1
for line in lines[1:]:
    line_items = line.strip().split(',')

    # your operation
    new_column = float(line_items[1]) * float(line_items[2])
    line_items.append(new_column)

    print(",".join(map(str, line_items)))

答案 3 :(得分:0)

您可以使用csv内置程序包读取csv,然后根据需要使用列进行操作。当然,你可以使用pandas库,但是喜欢使用大锤来破解坚果。在下面的例子中用文件读取替换StringIO(只是为了简化测试)并完成工作。

from io import StringIO 
import csv

f_in = StringIO("""STATE,RATE,DEATHS
IA,4.2,166
NH,4.2,52
MA,4.3,309
CA,4.4,2169
CO,4.6,309
ID,4.6,106
NY,4.6,1087
VT,4.6,27
NJ,4.7,487""")

reader = csv.reader(f_in)

with open('new.csv', 'w') as f:
  writer = csv.writer(f)
  headings = next(reader)
  headings.append('NEW')
  writer.writerow(headings)

  for row in reader:
    row.append(str(round(float(row[1]) * float(row[2]), 1)))
    writer.writerow(row)