将索引号转换为int

将索引号转换为int

编辑: .mean()函数正常运行:

renda['age'].mean()

我仍然不确定为什么下面和答案中提到的错误会发生,但这可以作为捷径。

我有一个DataFrame renda,其中有一列age,我需要获取年龄的平均值。我写
t_age = renda['age'].sum()
renda.index = renda.index.map(int) #intended solution
last_id = renda.iloc(-1)
print(t_age/last_id)

尝试调整here的答案。但是它仍然不起作用,并且会引发此错误:
TypeError: unsupported operand type(s) for /: 'int' and '_iLocIndexer'

我该怎么做才能解决这个问题?谢谢!

@ScottBoston:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in na_op(x, y)
    657             result = expressions.evaluate(op, str_rep, x, y,
--> 658                                           raise_on_error=True, **eval_kwargs)
    659         except TypeError:

/opt/conda/lib/python3.6/site-packages/pandas/core/computation/expressions.py in evaluate(op, op_str, a, b, raise_on_error, use_numexpr, **eval_kwargs)
    210         return _evaluate(op, op_str, a, b, raise_on_error=raise_on_error,
--> 211                          **eval_kwargs)
    212     return _evaluate_standard(op, op_str, a, b, raise_on_error=raise_on_error)

/opt/conda/lib/python3.6/site-packages/pandas/core/computation/expressions.py in _evaluate_numexpr(op, op_str, a, b, raise_on_error, truediv, reversed, **eval_kwargs)
    121     if result is None:
--> 122         result = _evaluate_standard(op, op_str, a, b, raise_on_error)
    123

/opt/conda/lib/python3.6/site-packages/pandas/core/computation/expressions.py in _evaluate_standard(op, op_str, a, b, raise_on_error, **eval_kwargs)
     63     with np.errstate(all='ignore'):
---> 64         return op(a, b)
     65

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in <lambda>(x, y)
     96                           default_axis=default_axis, reversed=True),
---> 97         rtruediv=arith_method(lambda x, y: operator.truediv(y, x),
     98                               names('rtruediv'), op('/'), truediv=True,

TypeError: unsupported operand type(s) for /: 'int' and 'str'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in safe_na_op(lvalues, rvalues)
    681             with np.errstate(all='ignore'):
--> 682                 return na_op(lvalues, rvalues)
    683         except Exception:

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in na_op(x, y)
    667                 mask = notnull(x)
--> 668                 result[mask] = op(x[mask], y)
    669             else:

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in <lambda>(x, y)
     96                           default_axis=default_axis, reversed=True),
---> 97         rtruediv=arith_method(lambda x, y: operator.truediv(y, x),
     98                               names('rtruediv'), op('/'), truediv=True,

TypeError: unsupported operand type(s) for /: 'int' and 'str'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-71-d5969a714aff> in <module>()
      3 renda.index = renda.index.astype(int) #use astype to convert to int
      4 last_id = renda.iloc[-1] #Square brackets
----> 5 print(t_age/last_id)

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in wrapper(left, right, name, na_op)
    719                 lvalues = lvalues.values
    720
--> 721         result = wrap_results(safe_na_op(lvalues, rvalues))
    722         return construct_result(
    723             left,

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in safe_na_op(lvalues, rvalues)
    690                 if is_object_dtype(lvalues):
    691                     return libalgos.arrmap_object(lvalues,
--> 692                                                   lambda x: op(x, rvalues))
    693             raise
    694

pandas/_libs/algos_common_helper.pxi in pandas._libs.algos.arrmap_object (pandas/_libs/algos.c:31954)()

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in <lambda>(x)
    690                 if is_object_dtype(lvalues):
    691                     return libalgos.arrmap_object(lvalues,
--> 692                                                   lambda x: op(x, rvalues))
    693             raise
    694

/opt/conda/lib/python3.6/site-packages/pandas/core/ops.py in <lambda>(x, y)
     95         rsub=arith_method(lambda x, y: y - x, names('rsub'), op('-'),
     96                           default_axis=default_axis, reversed=True),
---> 97         rtruediv=arith_method(lambda x, y: operator.truediv(y, x),
     98                               names('rtruediv'), op('/'), truediv=True,
     99                               fill_zeros=np.inf, default_axis=default_axis,

TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

@ juanpa.arrivillaga:
python - 将索引号转换为int(Python)-LMLPHP

最佳答案

我认为您需要这样做:

t_age = renda['age'].astype(int).sum()
renda.index = renda.index.astype(int) #use astype to convert to int
last_id = renda.iloc[-1] #Square brackets
print(t_age/last_id)

关于python - 将索引号转换为int(Python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48528348/

10-09 14:54