Это идеальный вариант использования для SQL. Если вы хотите реализовать SQL-подобные функции в Python, часто рекомендуется использовать pandas . Это удобно, легко писать и читать, и быстро. Для вашего случая, предполагая, что дополнительные значения будут сохранены в списке кортежей или в словаре:
import pandas as pd
csv = [
(1, 10),
(2, 20),
(3, 30),
]
csv_df = pd.DataFrame(csv, columns=["id", "reference"])
# This would be the data you have in your csv. For actually loading them from your
# csv located at `filepath`, use
#
# pd.DataFrame.read_csv(filepath)
additional_data = [
(1, "a"),
(2, "b"),
(3, "c"),
] # This could also be a dictionary
additional_df = pd.DataFrame(additional_data, columns=["id", "name"])
final_df = csv_df.merge(additional_df, on="id")
Тогда мы получим
>>> final_df
id reference name
0 1 10 a
1 2 20 b
2 3 30 c