Я пытаюсь найти соотношение 2 столбцов в кадре данных и сохранить его в новом столбце в том же кадре данных, при этом я сталкиваюсь со следующей ошибкой TypeError: неподдерживаемые типы операндов для /: 'float' и 'method' .
Мой набор данных содержит почти 8950 строк и 21 столбец, и я удалил все NAN.
>> credit.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8950 entries, 0 to 8949
Data columns (total 21 columns):
CUST_ID 8950 non-null object
BALANCE 8950 non-null float64
BALANCE_FREQUENCY 8950 non-null float64
PURCHASES 8950 non-null float64
ONEOFF_PURCHASES 8950 non-null float64
INSTALLMENTS_PURCHASES 8950 non-null float64
CASH_ADVANCE 8950 non-null float64
PURCHASES_FREQUENCY 8950 non-null float64
ONEOFF_PURCHASES_FREQUENCY 8950 non-null float64
PURCHASES_INSTALLMENTS_FREQUENCY 8950 non-null float64
CASH_ADVANCE_FREQUENCY 8950 non-null float64
CASH_ADVANCE_TRX 8950 non-null int64
PURCHASES_TRX 8950 non-null int64
CREDIT_LIMIT 8950 non-null object
PAYMENTS 8950 non-null float64
MINIMUM_PAYMENTS 8950 non-null object
PRC_FULL_PAYMENT 8950 non-null float64
TENURE 8950 non-null int64
Monthly_avg_purchase 8950 non-null float64
Monthly_cash_advance 8950 non-null float64
purchase_type 8950 non-null object
dtypes: float64(14), int64(3), object(4)
memory usage: 1.3+ MB
и когда я ' я пытаюсь найти соотношение я бью ошибку. строка ошибки и код ниже.
>> credit['LIMIT_USAGE'] = credit['BALANCE']/credit['CREDIT_LIMIT']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops\__init__.py in na_op(x, y)
967 try:
--> 968 result = expressions.evaluate(op, str_rep, x, y, **eval_kwargs)
969 except TypeError:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, op_str, a, b, use_numexpr, **eval_kwargs)
220 if use_numexpr:
--> 221 return _evaluate(op, op_str, a, b, **eval_kwargs)
222 return _evaluate_standard(op, op_str, a, b)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_numexpr(op, op_str, a, b, truediv, reversed, **eval_kwargs)
126 if result is None:
--> 127 result = _evaluate_standard(op, op_str, a, b)
128
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b, **eval_kwargs)
69 with np.errstate(all="ignore"):
---> 70 return op(a, b)
71
TypeError: unsupported operand type(s) for /: 'float' and 'method'
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-40-b24cdb4eaf3e> in <module>
----> 1 credit['LIMIT_USAGE'] = credit['BALANCE']/credit['CREDIT_LIMIT']
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops\__init__.py in wrapper(left, right)
1046
1047 with np.errstate(all="ignore"):
-> 1048 result = na_op(lvalues, rvalues)
1049 return construct_result(
1050 left, result, index=left.index, name=res_name, dtype=None
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops\__init__.py in na_op(x, y)
968 result = expressions.evaluate(op, str_rep, x, y, **eval_kwargs)
969 except TypeError:
--> 970 result = masked_arith_op(x, y, op)
971
972 return missing.dispatch_fill_zeros(op, x, y, result)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops\__init__.py in masked_arith_op(x, y, op)
445 if mask.any():
446 with np.errstate(all="ignore"):
--> 447 result[mask] = op(xrav[mask], com.values_from_object(yrav[mask]))
448
449 else:
TypeError: unsupported operand type(s) for /: 'float' and 'method'
Я пробовал также использовать функцию применения, и даже это не сработало. код и ошибка заявки указаны ниже
>> credit['limit_usage']=credit.apply(lambda x: x['BALANCE']/x['CREDIT_LIMIT'], axis=1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-43-2b06fadbf803> in <module>
----> 1 credit['limit_usage']=credit.apply(lambda x: x['BALANCE']/x['CREDIT_LIMIT'], axis=1)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in apply(self, func, axis, broadcast, raw, reduce, result_type, args, **kwds)
6911 kwds=kwds,
6912 )
-> 6913 return op.get_result()
6914
6915 def applymap(self, func):
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\apply.py in get_result(self)
184 return self.apply_raw()
185
--> 186 return self.apply_standard()
187
188 def apply_empty_result(self):
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\apply.py in apply_standard(self)
290
291 # compute the result using the series generator
--> 292 self.apply_series_generator()
293
294 # wrap results
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\apply.py in apply_series_generator(self)
319 try:
320 for i, v in enumerate(series_gen):
--> 321 results[i] = self.f(v)
322 keys.append(v.name)
323 except Exception as e:
<ipython-input-43-2b06fadbf803> in <lambda>(x)
----> 1 credit['limit_usage']=credit.apply(lambda x: x['BALANCE']/x['CREDIT_LIMIT'], axis=1)
TypeError: ("unsupported operand type(s) for /: 'float' and 'method'", 'occurred at index 5203')
Пожалуйста, предложите быстрое решение для этого.
Заранее спасибо.