2017-05-16 2 views
0

データフレームのサブセットは大きなデータフレームの最初の50列です。私は別の列の値によって一つの列の値を分割して形成された番号にEXP関数を使用しようとしています:TypeError:exp関数を使用している場合、系列を<class 'float'>に変換できません。

import math 
subset['exp'] = math.exp(subset['A']/subset['B']) 

しかし、これは、次のエラーが返されます。

TypeError: cannot convert the series to <class 'float'> 

私は混乱しています両方の列は、私が使用してテストしたフロートタイプがあるので:

df['A'].dtype 

は私も(彼らはすでに浮動小数点数のように見えるにもかかわらず)フロート機能を使用してそれらを変換しようとしている:

subset['exp'] = math.exp(float(subset['A'])/float(subset['B'])) 

これで同じエラーが発生します。

すべてのヘルプは、単一の浮動小数点数を期待して、あなたの代わりにシリーズを渡す

答えて

1

math.exp()を高く評価しました。 numpy.exp()math.exp()のベクトル化バージョン)を使用してください。あなたはapply

subset['exp'] = subset.apply(lambda x: math.exp(x.A/x.B), axis=1) 

applyで行くことができ、あなたがmath.expに滞在したい場合、また

subset['exp'] = np.exp(subset['A']/subset['B']) 

0

同様DYZは、あなたがnumpyを使用して、次の結果を得ることができ、指摘しました行をループするか、dataframeです。しかし、この方法は、大きなdataframeの場合には最速ではありません。

関連する問題