【发布时间】:2021-12-25 15:28:48
【问题描述】:
我的程序需要一个从 csv 文件(“all.csv”)读取数据并提取与特定日期的状态相关的所有数据的函数(提取具有“状态名称”和“日期”的每一行它),然后将提取的数据写入另一个名为:state +“.csv”的csv文件
在写入数据时,会计算并汇总每个州在该特定日期的病例数和死亡数。然后该函数将总病例数和死亡数作为元组返回 (cases,deaths)
例如。状态 = '加利福尼亚' 日期 = '2020-03-09'
我得到的错误是 '0.0' 和 'deaths' 不能转换为 int。第一行是标题,我收到“死亡无法转换为 int”的错误。所以我有两个问题:
- 如何跳过标题“死亡”(最后一列)并转到其余数据?
- 如何将其余数据(十进制格式的字符串)转换为 int?
注意:当我将链接数据保存到“all.csv”时,死亡列转换为十进制格式 (0.0)。
这里是“all.csv”的内容:https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv
这是 'all.csv' 的 sn-p: **请注意,“all.csv”中有 7 列,而不是 csv 文件超链接中的 6 列
这是我写的程序:
import csv
input_file = 'all.csv'
state = input()
date = input() # date format m/d/yyyy
output_file = state + '.csv'
def number_of_cases_deaths_by_date(input_file, output_file, state, date):
with open(input_file, 'r') as infile: #open both files
contents = infile.readlines()
with open(output_file, 'w') as outfile:
writer = csv.writer(outfile)
for row in range(len(contents)): # save data in list
contents[row] = contents[row].split(',') #split elements
contents[row][6] = contents[row][6].strip('\n') #strip \n from last column
print(contents[3:5])
cases = 0
deaths = 0
for row in range(len(contents)):
if contents[row][3] == state and contents[row][1] == date: # if row has desired state, write it to new file
writer.writerow((contents[row]))
int_cases = int(contents[row][5])
cases = cases + int_cases
int_deaths = int(contents[row][6])
deaths += deaths + int_deaths
return (cases, deaths)
data = number_of_cases_deaths_by_date(input_file, output_file, state, date)
print(data)
【问题讨论】:
-
Please do not post text as images。将文本复制并粘贴到您的问题中,并使用代码格式化工具正确格式化。图像不可搜索,也无法通过屏幕阅读器为有视觉障碍的人解读。使用edit 链接修改您的问题。
-
我认为你可以使用 pandas、numpy 库来玩 CSV 数据
-
"如何将其余数据(十进制格式的字符串)转换为 int?"用您自己的话来说,您认为
int是什么?用您自己的话来说,为什么您认为应该可以将“十进制格式的字符串”转换为 1,您认为应该是什么结果? -
“我怎样才能跳过标题“死亡”(最后一列)并转到其余数据?”您是否尝试阅读 csv 模块的文档?把
python csv skip headerinto a search engine放上去怎么样?