Как вручную связать в Brightway2 импортированный обмен, если я нашел правильный в ecoinvent
Я связываю свои данные автоматически с
import functools
from bw2io.strategies import link_iterable_by_fields
sp.apply_strategy(functools.partial(
link_iterable_by_fields,
other=Database("ecoinvent 3.2 cutoff"),
kind="technosphere",
fields=["reference product", "name", "unit", "location"]
))
sp.statistics()
Когда я перечисляю оставшиеся несвязанные наборы данных с
bw2io.importers.simapro_csv.SimaProCSVImporter
например, выводит:
Electricity, low voltage {ENTSO-E}| market group for | Alloc Rec, U kilowatt hour ('Electricity/heat',)
Учитывая, что я нашел набор данных в ecoinvent:
'market group for electricity, low voltage' (kilowatt hour, ENTSO-E, None)
Как связать эти наборы данных вместе?
1 ответ
Это набор данных из ecoinvent 3.2, для которого bw2io еще не имеет данных миграции для "специальных" имен SimaPro. Обычно преобразование из имен Simapro (например, Electricity, low voltage {ENTSO-E}| market group for | Alloc Rec, U
) к названиям и экоинвентам видов деятельности и справочных продуктов будет относиться миграция simapro-ecoinvent-3
, Но это не работает в этом случае:
In [4]: Migration('simapro-ecoinvent-3').load()['Electricity, low voltage {ENTSO-E}| market group for | Alloc Rec, U']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Вы можете написать свою собственную миграцию:
migration_data = {
'fields': ['name'],
'data': [
(
# First element is input data in the order of `fields` above
('Electricity, low voltage {ENTSO-E}| market group for | Alloc Rec, U',),
# Second element is new values
{
'name': 'market group for electricity, low voltage',
'reference product': 'electricity, high voltage',
'location': 'ENTSO-E',
}
)
]
}
Migration("new-ecoinvent").write(
migration_data,
description="New datasets in ecoinvent 3.2"
)
И затем примените эту миграцию к вашим несвязанным данным:
sp.migrate("new-ecoinvent")
Миграция только изменяет данные, используемые для связи; вам все равно придется подать заявку link_iterable_by_fields
на самом деле ссылка на экоинвент 3.2.