2017-08-21 14 views
0

対数を連続して実行しようとしていますが、次のエラーが発生します。Pythonの対数計算

O/p = 10*math.log(10,df['A']+df['B']) 

必要な出力:

row1 = 10*math.log(10,6) 
row2 = 10*math.log(10,8) 
row3 = 10*math.log(10,10) 

しかし、取得はTypeError

TypeError: cannot convert the series to class 'float'

私は2つの列AとデータフレームとB

A B 
------ 
1 5 
2 6 
3 7 

私は次のことをしようとしていますがあります:シリーズを変換できません

+2

あなたは – brownKnight

+1

はStackOverflowの上ようこそ、コードの代わりに、画像を貼り付けてくださいすることができます。デバッグのヘルプ(**はなぜこのコードが動作しないのですか?**)は、 希望の動作、特定の問題またはエラー、および最短のコードを含む必要があります**それは質問自体**で再現する必要があります。 **明確な問題のない質問 ステートメント**は、他の読者には役に立ちません。参照:[最小、完全、および 検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve) – Qeek

+1

[TypeError:系列を]に変換できません(https://stackoverflow.com/questions/42988348/typeerror-cannot-convert-the-series-to-class-float)。 "Math.logはアレイではなく、単一の番号を期待しています。" – davedwards

答えて

0

math.logは、タイプfloatscalarで動作するように意図されています。系列型のデータフレーム列のlog10を計算するには、hereと記載されているnumpy.log10を使用します。

例:

import numpy 
10*numpy.log10(df['A']+df['B']) 

は、ここで再現可能な例を示します

>>> import pandas as pd 
>>> import numpy as np 
>>> 
>>> df = pd.DataFrame([[1,5],[2,6],[3,7]], columns=["A","B"]) 
>>> df 
    A B 
0 1 5 
1 2 6 
2 3 7 
>>> np.log10(df["A"]+df["B"]) 
0 0.778151 
1 0.903090 
2 1.000000 
dtype: float64 
>>>