【发布时间】:2021-07-11 20:32:38
【问题描述】:
我有一个自 1908 年以来所有飞机失事事件的 csv 文件。csv 标题列是,
Date,Time,Location,Operator,Flight #,Route,Type,Registration,cn/In,Aboard,Fatalities,Ground,Summary
我的代码在下面,但这会打印整个文件, 有没有办法使用 CSV 或搁置模块,我可以使用它来制作持久数据库。 这里的最终目标是对数据进行切片和切块, 例如:按日期排序、按年份分组等。
#!/usr/bin/env python3.8
import sqlite3
import csv
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS air_disaster')
cur.execute('''
CREATE TABLE "air_disaster" (
"Date1" TEXT,
"Time1" TEXT,
"Location1" TEXT,
"Operator1" TEXT,
"Flight_No" TEXT,
"Route" TEXT,
"Type1" TEXT,
"Registration" TEXT,
"cn" TEXT,
"Aboard" REAL,
"Fatalities" REAL,
"ground" TEXT,
"Summary" TEXT
)
''')
with open("/Users/foobar/Downloads/Airplane_Crashes_and_Fatalities_Since_1908.csv") as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
Date1 = row["Date"]
Time1 = row["Time"]
Location1 = row["Location"]
Operator1 = row["Operator"]
Flight_No = row["Flight #"]
Route = row["Route"]
Type1 = row["Type"]
Registration = row["Registration"]
cn = row["cn/In"]
Aboard = row["Aboard"]
Fatalities = row["Fatalities"]
ground = row["Ground"]
Summary = row["Summary"]
cur.execute('''INSERT INTO air_disaster(Date1,Time1,Location1,Operator1,Flight_No,Route,Type1,Registration,cn,Aboard,Fatalities,ground,Summary)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)''', (Date1,Time1,Location1,Operator1,Flight_No,Route,Type1,Registration,cn,Aboard,Fatalities,ground,Summary))
conn.commit()
(cur.execute('SELECT * from air_disaster where Fatalities > 1000'))
【问题讨论】:
-
我有一个不能使用 pandas 的限制,python csv 模块中有没有办法可以使用 CSV 标头自动制作列。