Создайте небольшой фрейм данных:
In [17]: df = pd.DataFrame(np.arange(12.).reshape(4,3))
In [18]: df
Out[18]:
0 1 2
0 0.0 1.0 2.0
1 3.0 4.0 5.0
2 6.0 7.0 8.0
3 9.0 10.0 11.0
Попробуйте использовать mean
, как вы делаете, показывая полный возврат:
In [19]: np.mean(df.loc[0,1],df.loc[1,1])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-19b913c69c93> in <module>
----> 1 np.mean(df.loc[0,1],df.loc[1,1])
/usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py in mean(a, axis, dtype, out, keepdims)
3113 pass
3114 else:
-> 3115 return mean(axis=axis, dtype=dtype, out=out, **kwargs)
3116
3117 return _methods._mean(a, axis=axis, dtype=dtype,
/usr/local/lib/python3.6/dist-packages/numpy/core/_methods.py in _mean(a, axis, dtype, out, keepdims)
60
61 is_float16_result = False
---> 62 rcount = _count_reduce_items(arr, axis)
63 # Make this warning show up first
64 if rcount == 0:
/usr/local/lib/python3.6/dist-packages/numpy/core/_methods.py in _count_reduce_items(arr, axis)
53 items = 1
54 for ax in axis:
---> 55 items *= arr.shape[ax]
56 return items
57
TypeError: tuple indices must be integers or slices, not numpy.float64
Обратите внимание, что ошибка возникает при попытке использовать переменную оси. Если arr
является массивом numpy, то arr.shape
является кортежем. (1,2,3)[1.0]
выдаст то же сообщение об ошибке.
Из np.mean
документов:
Signature: np.mean(a, axis=None, ...)
первый аргумент - массив (или что-то, что можно превратить в массив). Вторым является значение оси - None
, целое число или кортеж целых чисел. Вместо этого вы даете ему элемент вашего информационного кадра, очевидно, тот, который является плавающей точкой.
Так что вам нужно дать np.mean
правильные аргументы. Например, список элементов dataframe:
In [22]: np.mean([df.loc[0,1],df.loc[1,1]])
Out[22]: 2.5
===
Резюме:
посмотрите на полный трекбек и покажите его нам. Он может иметь ценные подсказки относительно того, что не так
читать документы функций, которые вы используете.