【发布时间】:2021-07-14 12:37:58
【问题描述】:
我有一个创建比率的函数。它被定义为
def create_ratio(data,num,den):
if data[num].isnull():
ratio = -9997
if data[den].isnull():
ratio = -9998
if data[num].isnull() & data[den].isnull():
ratio = -9999
else:
ratio = data[num]/data[den]
return ratio
我有 pandas 数据框 (df_credit),其中包括信用卡余额 (cc_bal) 和限额 (cc_limit),我想计算余额超出限额的信用卡利用率
df_credit['cc_util'] = create_ratio(df_credit,'cc_bal','cc_limit')
我收到以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-66-d53809a7690d> in <module>
----> 1 data['ratio_cc_util'] = create_ratio(data,'open_credit_card_credit_limit_nomiss','open_credit_card_credit_limit_nomiss')
2 data['ratio_cc_util'].hist()
<ipython-input-65-99bc55b184ed> in create_ratio(data, num, den)
1 def create_ratio(data,num,den):
----> 2 if data[num].isnull():
3 ratio = -9997
4 if data[den].isnull():
5 ratio = -9998
/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py in __nonzero__(self)
1441 def __nonzero__(self):
1442 raise ValueError(
-> 1443 f"The truth value of a {type(self).__name__} is ambiguous. "
1444 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
1445 )
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这个错误的解决方法是什么?谢谢。
【问题讨论】:
-
你正在混合标量和系列...
ratio有时是标量(-9997 等),在其他情况下是系列data[num]/data[den]
标签: pandas missing-data