Я пытаюсь определить функцию, которая перебирает словарь, в котором ключами являются имена столбцов данных, а значения - это скидки, связанные с этим столбцом, если наблюдение соответствует критериям для скидки.Я хочу умножить скидки вместе и использовать продукт в качестве компенсации в GLM.В настоящее время я получаю следующую ошибку:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-242-0029e2a0de4f> in <module>
----> 1 offset_params(df)
<ipython-input-241-b5343cde7a7e> in offset_params(df)
8
9 for keys, vals in discounts.items():
---> 10 if df[keys] == 0:
11 offset = offset * 1
12 else:
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1574 raise ValueError("The truth value of a {0} is ambiguous. "
1575 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1576 .format(self.__class__.__name__))
1577
1578 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Вот пример кода, который выдает такую же ошибку:
import pandas as pd
discounts = {'discount1_0':[0,1], 'discount1_1':[1,0], 'discount2_0':[0,1],'discount2_1':[1,0]
, 'discount3_0':[0,1],'discount3_1':[1,0],'discount1_0':[1,0], 'discount1_1':[0,1]
, 'discount2_0':[1,0],'discount2_1':[0,1], 'discount3_0':[1,0],'discount3_1':[0,1]
}
df = pd.DataFrame(discounts)
def offset_params(df):
discounts = {'discount1_0':1, 'discount1_1':.98, 'discount2_0':1,'discount2_1':.95
, 'discount3_0':1,'discount3_1':.95,'discount1_0':1, 'discount1_1':.98
, 'discount2_0':1,'discount2_1':.95, 'discount3_0':1,'discount3_1':.95
}
offset = 1
for keys, vals in discounts.items():
if df[keys] == 0:
offset = offset * 1
else:
offset = offset * vals
return offset
Где я иду не так?