我正在使用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
我试过寻找这个问题的答案,但找不到类似的东西。提前致谢。
答案 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)