Я придумал следующее решение этой проблемы:
def iter_var1(d):
for _, row in d.iterrows():
for v in row["var1"].split(","):
yield (v, row["var2"])
new_a = DataFrame.from_records([i for i in iter_var1(a)],
columns=["var1", "var2"])
Смените foodVATRate
на decimal
. Кажется, нет никаких причин для его удвоения.
Вы не можете умножить decimal
на double
. Вы можете исправить это путем литья типов, но вы, вероятно, просто хотите придерживаться decimal
по всем ценам и ставкам НДС.
Тип decimal
был разработан для полезно для финансовых расчетов, поскольку он обеспечивает высокую точность за счет уменьшения диапазона для размера типа в байтах.
Попробуйте следующее:
Rate = (decimal)Vat * Finalprice;
Вам нужно отбросить один на другой. Я предполагаю, что как Цена, так и все ваши ставки НДС должны быть действительно десятичными - двойное не является (обычно) подходящим для работы с любым типом денежных значений.