Давайте рассмотрим ошибку, упомянутую первой в этом сообщении.
TypeError: неподдерживаемые типы операндов для ** или pow (): 'str' и 'int'
Что означает эта ошибка, которую вы пытаетесь принять и привести к власти, мы можем воспроизвести эту ошибку, используя следующий пример:
df = pd.DataFrame({'a':['1','2','3'],'b':[4,5,6]})
df['a']**2
Вывести последнюю строку трассировки стека:
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Простое решение для этого, если все ваши столбцы являются числовыми представлениями, тогда используйте pd.to_numeric
:
pd.to_numeric(df['a'])**2
Вывод:
0 1
1 4
2 9
Name: a, dtype: int64
Получил не-числовые строки также в столбце a?
Использование errors = 'coerce'
в качестве параметра для pd.to_numeric
df = pd.DataFrame({'a':['a','1','2','3'],'b':[4,5,6,7]})
Использование:
pd.to_numeric(df['a'], errors='coerce')**2
Вывод:
0 NaN
1 1.0
2 4.0
3 9.0
Name: a, dtype: float64