在Python的petl库中,根据文档,“这个包广泛使用了惰性求值和迭代器。这意味着,通常,在请求数据之前,管道不会真正被执行。” ETL 管道
我尝试在以下代码中处理这个问题:
`import petl as etl
import re
# Functions to be used for conversions
def convert_commissioning_year(year):
match year:
case None:
return 0
case "NA":
return 0
case str.find("s"):
# If the year is a string with an s at the end, we assume it indicates decade (like 2970s)
middle_year = int(str(year)[:-1]) + 5
return middle_year
case _:
return int(year)
# Clean 'max_speed_warp_factor' by extracting the numeric portion
def extract_numeric_speed(speed):
print("JOLL")
if isinstance(speed, str):
match = re.search(r"[\d]+[.][\d]", speed)
if match:
return float(match.group())
return None
# Load the CSV data using petl
table = etl.fromcsv('/Documents/star_trek_table.csv')
# Standardizing column names to snake_case
table2 = etl.rename(table, {
'Ship Name': 'Name',
'Registry Number': 'RegNo',
'Captain(s)': 'Captain',
'Launch Date': 'Commissioning',
'Notable Appearances (Series/Movies)': 'Appearances',
'Ship’s Complement': 'Complement',
'Max Speed (Warp Factor)': 'Warp'
})
# Convert 'launch_date' and 'ships_complement' to integers (handling any errors)
table3 = etl.convert(table2, 'Commissioning', convert_commissioning_year)
table4 = etl.convert(table3, 'Complement', int)
table5 = etl.convert(table4, 'Warp', extract_numeric_speed)
# Strip any leading/trailing whitespace in string columns
table6 = etl.convertall(table5, lambda v: str.strip(v))
# Display the cleaned data (in a limited format for brevity)
print(etl.lookall(table6))
# Save the cleaned data back to CSV
etl.tocsv(table6, '/Documents/cleaned_star_trek_table.csv')
print("END")
打印输出:
`/petl/.venv/bin/python /petl/main.py
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| Name | RegNo | Class | Captain | Commissioning | Appearances | Complement | Warp |
+================================+==============+=======================+======================================+===============+=======================================================+============+======+
| 'USS Enterprise (NCC-1701)' | 'NCC-1701' | 'Constitution-class' | 'Capt. James T. Kirk, Capt. Pike' | None | 'Star Trek: TOS, Movies I-IV, VI' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-A)' | 'NCC-1701-A' | 'Constitution-class' | 'Capt. James T. Kirk' | None | 'Star Trek IV-VI' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-B)' | 'NCC-1701-B' | 'Excelsior-class' | 'Capt. John Harriman' | None | 'Star Trek: Generations' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-C)' | 'NCC-1701-C' | 'Ambassador-class' | 'Capt. Rachel Garrett' | None | 'Star Trek: TNG (Episode: "Yesterday\'s Enterprise")' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-D)' | 'NCC-1701-D' | 'Galaxy-class' | 'Capt. Jean-Luc Picard' | None | 'Star Trek: TNG, Movies VII, VIII' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-E)' | 'NCC-1701-E' | 'Sovereign-class' | 'Capt. Jean-Luc Picard' | None | 'Movies VIII-X' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Voyager (NCC-74656)' | 'NCC-74656' | 'Intrepid-class' | 'Capt. Kathryn Janeway' | None | 'Star Trek: Voyager' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Defiant (NX-74205)' | 'NX-74205' | 'Defiant-class' | 'Capt. Benjamin Sisko' | None | 'Star Trek: Deep Space Nine' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Discovery (NCC-1031)' | 'NCC-1031' | 'Crossfield-class' | 'Capt. Gabriel Lorca, Capt. Pike' | None | 'Star Trek: Discovery' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Cerritos (NCC-75567)' | 'NCC-75567' | 'California-class' | 'Capt. Carol Freeman' | None | 'Star Trek: Lower Decks' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Shenzhou (NCC-1227)' | 'NCC-1227' | 'Walker-class' | 'Capt. Philippa Georgiou' | None | 'Star Trek: Discovery' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Excelsior (NCC-2000)' | 'NCC-2000' | 'Excelsior-class' | 'Capt. Hikaru Sulu' | None | 'Star Trek VI, Star Trek III' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Saratoga (NCC-31911)' | 'NCC-31911' | 'Miranda-class' | 'Capt. J.G. Sanders' | None | 'Star Trek IV, DS9 (pilot)' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Prometheus (NX-59650)' | 'NX-59650' | 'Prometheus-class' | 'Various (Multivector Assault Mode)' | None | 'Star Trek: Voyager (Episode: "Message in a Bottle")' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Thunderchild (NCC-63549)' | 'NCC-63549' | 'Akira-class' | 'NA' | None | 'Star Trek: First Contact' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Yamato (NCC-71807)' | 'NCC-71807' | 'Galaxy-class' | 'Capt. Donald Varley' | None | 'Star Trek: TNG' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Equinox (NCC-72381)' | 'NCC-72381' | 'Nova-class' | 'Capt. Rudolph Ransom' | None | 'Star Trek: Voyager (Episode: "Equinox")' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Reliant (NCC-1864)' | 'NCC-1864' | 'Miranda-class' | 'Capt. Clark Terrell' | None | 'Star Trek II: The Wrath of Khan' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Stargazer (NCC-2893)' | 'NCC-2893' | 'Constellation-class' | 'Capt. Jean-Luc Picard' | None | 'Star Trek: TNG (Episode: "The Battle")' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Titan (NCC-80102)' | 'NCC-80102' | 'Luna-class' | 'Capt. William Riker' | None | 'Star Trek: Lower Decks, Star Trek: Picard' | None | None |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
JOLL
END
Process finished with exit code 0
为什么在最后评估函数 extract_numeric_speed ,以及为什么我最终在所有转换的列中得到 None 值?谢谢。
我希望在相应的列中获得转换后的值。
考虑到 petl 的惰性求值,我将表重命名为一系列表(table1、table2 等)。
原来的表格是这样的:
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| Ship Name | Registry Number | Class | Captain(s) | Launch Date | Notable Appearances (Series/Movies) | Ship’s Complement | Max Speed (Warp Factor) |
+================================+=================+=======================+======================================+=============+=======================================================+===================+===========================+
| 'USS Enterprise (NCC-1701)' | 'NCC-1701' | 'Constitution-class' | 'Capt. James T. Kirk, Capt. Pike' | '2245' | 'Star Trek: TOS, Movies I-IV, VI' | '430' | 'Warp 8' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Enterprise (NCC-1701-A)' | 'NCC-1701-A' | 'Constitution-class' | 'Capt. James T. Kirk' | '2286' | 'Star Trek IV-VI' | '500' | 'Warp 9' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Enterprise (NCC-1701-B)' | 'NCC-1701-B' | 'Excelsior-class' | 'Capt. John Harriman' | '2293' | 'Star Trek: Generations' | '750' | 'Warp 9.6' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Enterprise (NCC-1701-C)' | 'NCC-1701-C' | 'Ambassador-class' | 'Capt. Rachel Garrett' | '2344' | 'Star Trek: TNG (Episode: "Yesterday\'s Enterprise")' | '700' | 'Warp 9' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Enterprise (NCC-1701-D)' | 'NCC-1701-D' | 'Galaxy-class' | 'Capt. Jean-Luc Picard' | '2363' | 'Star Trek: TNG, Movies VII, VIII' | '1014' | 'Warp 9.6' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Enterprise (NCC-1701-E)' | 'NCC-1701-E' | 'Sovereign-class' | 'Capt. Jean-Luc Picard' | '2372' | 'Movies VIII-X' | '885' | 'Warp 9.99' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Voyager (NCC-74656)' | 'NCC-74656' | 'Intrepid-class' | 'Capt. Kathryn Janeway' | '2371' | 'Star Trek: Voyager' | '150' | 'Warp 9.975' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Defiant (NX-74205)' | 'NX-74205' | 'Defiant-class' | 'Capt. Benjamin Sisko' | '2370' | 'Star Trek: Deep Space Nine' | '50' | 'Warp 9.982' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Discovery (NCC-1031)' | 'NCC-1031' | 'Crossfield-class' | 'Capt. Gabriel Lorca, Capt. Pike' | '2256' | 'Star Trek: Discovery' | '136' | 'Warp 9.99 / Spore Drive' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Cerritos (NCC-75567)' | 'NCC-75567' | 'California-class' | 'Capt. Carol Freeman' | 'NA' | 'Star Trek: Lower Decks' | '80' | 'Warp 7' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Shenzhou (NCC-1227)' | 'NCC-1227' | 'Walker-class' | 'Capt. Philippa Georgiou' | '2256' | 'Star Trek: Discovery' | '215' | 'Warp 8' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Excelsior (NCC-2000)' | 'NCC-2000' | 'Excelsior-class' | 'Capt. Hikaru Sulu' | '2287' | 'Star Trek VI, Star Trek III' | '750' | 'Warp 9.5' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Saratoga (NCC-31911)' | 'NCC-31911' | 'Miranda-class' | 'Capt. J.G. Sanders' | 'NA' | 'Star Trek IV, DS9 (pilot)' | '36' | 'Warp 8' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Prometheus (NX-59650)' | 'NX-59650' | 'Prometheus-class' | 'Various (Multivector Assault Mode)' | '2374' | 'Star Trek: Voyager (Episode: "Message in a Bottle")' | '4' | 'Warp 9.99' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Thunderchild (NCC-63549)' | 'NCC-63549' | 'Akira-class' | 'NA' | 'NA' | 'Star Trek: First Contact' | '500' | 'Warp 9.8' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Yamato (NCC-71807)' | 'NCC-71807' | 'Galaxy-class' | 'Capt. Donald Varley' | 'NA' | 'Star Trek: TNG' | '1014' | 'Warp 9.6' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Equinox (NCC-72381)' | 'NCC-72381' | 'Nova-class' | 'Capt. Rudolph Ransom' | '2370s' | 'Star Trek: Voyager (Episode: "Equinox")' | '80' | 'Warp 8.6' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Reliant (NCC-1864)' | 'NCC-1864' | 'Miranda-class' | 'Capt. Clark Terrell' | '2285' | 'Star Trek II: The Wrath of Khan' | '281' | 'Warp 8.5' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Stargazer (NCC-2893)' | 'NCC-2893' | 'Constellation-class' | 'Capt. Jean-Luc Picard' | 'NA' | 'Star Trek: TNG (Episode: "The Battle")' | '500' | 'Warp 9' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
| 'USS Titan (NCC-80102)' | 'NCC-80102' | 'Luna-class' | 'Capt. William Riker' | 'NA' | 'Star Trek: Lower Decks, Star Trek: Picard' | '350' | 'Warp 9.99' |
+--------------------------------+-----------------+-----------------------+--------------------------------------+-------------+-------------------------------------------------------+-------------------+---------------------------+
感谢上面的评论,我能够制定一个可行的解决方案。看起来像这样:
import petl as etl
import re
# Functions to be used for conversions
def convert_commissioning_year(year):
match year:
case None:
return 0
case "NA":
return 0
case _:
# If the year is a string with an s at the end, we assume it indicates decade (like 2970s)
if year[-1] == "s":
middle_year = int(str(year)[:-1]) + 5
return middle_year
else:
return int(year)
# Clean 'max_speed_warp_factor' by extracting the numeric portion
def extract_numeric_speed(speed):
if isinstance(speed, str):
match_float = re.search(r"\s\d+[.]\d", speed)
match_int = re.search(r"\s\d+", speed)
if match_float:
return float(match_float.group())
else:
return float(match_int.group())
return None
# Load the CSV data using petl
table = etl.fromcsv('/home/eric/Documents/star_trek_table.csv')
# Simplifying column names
table2 = etl.rename(table, {
'Ship Name': 'name',
'Registry Number': 'reg_no',
'Captain(s)': 'captain',
'Launch Date': 'commissioning',
'Notable Appearances (Series/Movies)': 'appearances',
'Ship’s Complement': 'complement',
'Max Speed (Warp Factor)': 'warp_speed'
})
# Convert 'launch_date' and 'ships_complement' to integers (handling any errors)
table3 = etl.convert(table2, 'commissioning', convert_commissioning_year)
table4 = etl.convert(table3, 'complement', int)
table5 = etl.convert(table4, 'warp_speed', extract_numeric_speed)
# Display the cleaned data (in a limited format for brevity)
print(etl.lookall(table5))
# Save the cleaned data back to CSV
etl.tocsv(table5, '/home/eric/Documents/cleaned_star_trek_table.csv')
这给出了输出:
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| Name | RegNo | Class | Captain | Commissioning | Appearances | Complement | Warp |
+================================+==============+=======================+======================================+===============+=======================================================+============+======+
| 'USS Enterprise (NCC-1701)' | 'NCC-1701' | 'Constitution-class' | 'Capt. James T. Kirk, Capt. Pike' | 2245 | 'Star Trek: TOS, Movies I-IV, VI' | 430 | 8.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-A)' | 'NCC-1701-A' | 'Constitution-class' | 'Capt. James T. Kirk' | 2286 | 'Star Trek IV-VI' | 500 | 9.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-B)' | 'NCC-1701-B' | 'Excelsior-class' | 'Capt. John Harriman' | 2293 | 'Star Trek: Generations' | 750 | 9.6 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-C)' | 'NCC-1701-C' | 'Ambassador-class' | 'Capt. Rachel Garrett' | 2344 | 'Star Trek: TNG (Episode: "Yesterday\'s Enterprise")' | 700 | 9.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-D)' | 'NCC-1701-D' | 'Galaxy-class' | 'Capt. Jean-Luc Picard' | 2363 | 'Star Trek: TNG, Movies VII, VIII' | 1014 | 9.6 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Enterprise (NCC-1701-E)' | 'NCC-1701-E' | 'Sovereign-class' | 'Capt. Jean-Luc Picard' | 2372 | 'Movies VIII-X' | 885 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Voyager (NCC-74656)' | 'NCC-74656' | 'Intrepid-class' | 'Capt. Kathryn Janeway' | 2371 | 'Star Trek: Voyager' | 150 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Defiant (NX-74205)' | 'NX-74205' | 'Defiant-class' | 'Capt. Benjamin Sisko' | 2370 | 'Star Trek: Deep Space Nine' | 50 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Discovery (NCC-1031)' | 'NCC-1031' | 'Crossfield-class' | 'Capt. Gabriel Lorca, Capt. Pike' | 2256 | 'Star Trek: Discovery' | 136 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Cerritos (NCC-75567)' | 'NCC-75567' | 'California-class' | 'Capt. Carol Freeman' | 0 | 'Star Trek: Lower Decks' | 80 | 7.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Shenzhou (NCC-1227)' | 'NCC-1227' | 'Walker-class' | 'Capt. Philippa Georgiou' | 2256 | 'Star Trek: Discovery' | 215 | 8.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Excelsior (NCC-2000)' | 'NCC-2000' | 'Excelsior-class' | 'Capt. Hikaru Sulu' | 2287 | 'Star Trek VI, Star Trek III' | 750 | 9.5 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Saratoga (NCC-31911)' | 'NCC-31911' | 'Miranda-class' | 'Capt. J.G. Sanders' | 0 | 'Star Trek IV, DS9 (pilot)' | 36 | 8.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Prometheus (NX-59650)' | 'NX-59650' | 'Prometheus-class' | 'Various (Multivector Assault Mode)' | 2374 | 'Star Trek: Voyager (Episode: "Message in a Bottle")' | 4 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Thunderchild (NCC-63549)' | 'NCC-63549' | 'Akira-class' | 'NA' | 0 | 'Star Trek: First Contact' | 500 | 9.8 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Yamato (NCC-71807)' | 'NCC-71807' | 'Galaxy-class' | 'Capt. Donald Varley' | 0 | 'Star Trek: TNG' | 1014 | 9.6 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Equinox (NCC-72381)' | 'NCC-72381' | 'Nova-class' | 'Capt. Rudolph Ransom' | 2375 | 'Star Trek: Voyager (Episode: "Equinox")' | 80 | 8.6 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Reliant (NCC-1864)' | 'NCC-1864' | 'Miranda-class' | 'Capt. Clark Terrell' | 2285 | 'Star Trek II: The Wrath of Khan' | 281 | 8.5 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Stargazer (NCC-2893)' | 'NCC-2893' | 'Constellation-class' | 'Capt. Jean-Luc Picard' | 0 | 'Star Trek: TNG (Episode: "The Battle")' | 500 | 9.0 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+
| 'USS Titan (NCC-80102)' | 'NCC-80102' | 'Luna-class' | 'Capt. William Riker' | 0 | 'Star Trek: Lower Decks, Star Trek: Picard' | 350 | 9.9 |
+--------------------------------+--------------+-----------------------+--------------------------------------+---------------+-------------------------------------------------------+------------+------+