2016-07-03 21 views
1

Ich habe einen Datensatz namens "Sales", die ein SFrame ist. Es gibt eine Spalte namens "sqft_living", und ich möchte es in den Protokollwert konvertieren. Der Datentyp der Spalte ist float. aber wenn ich versuche, es mit log() -Funktion zu konvertieren, fragt es einen float, obwohl es bereits ein float ist. hier sind die Screenshots von Codes und Fehler. könnten Sie mir bitte helfen, das Problem und wandeln die Spalte zu findenPython log() -Funktion TypeError

a=train_data['sqft_living'] 
a 

result of a 
dtype: float 
Rows: 17384 
[1180.0, 2570.0, 770.0, 1960.0,...] 

dies zeigt, dass „a“ float ist

dann i unter Codewert zu transformieren sich einloggen, um neue Spalte anmelden 'log_sqft_living' genannt

train_data['log_sqft_living']= log(a) 

aber es gibt unter Fehler sein

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-23-6de995ee575f> in <module>() 
----> 1 train_data['log_sqft_living']= log(a) 

TypeError: a float is required 
+0

Bitte Code nicht eingeben oder als Bilder ausgeben. In ein paar Monaten kann dieses Bild verschwinden und dann wird Ihre Frage niemandem in der gleichen Situation helfen. Bitte bearbeiten Sie Ihre Frage, um den Text Ihrer IPython-Sitzung einzuschließen. –

+0

'a' ist eine Liste. Kein Schwimmer. Und bitte keine Bilder einfügen. Fügen Sie den gesamten Code hier ein. – Rahul

+0

vielen Dank für die Antwort. Ich habe den Beitrag bearbeitet. jede Hilfe wäre wirklich zu schätzen –

Antwort

0

Verwendung von Python 3.5 unter Windows 10 mit Python-Shell

Wie von Rahul, a hingewiesen wird, ist eine Liste.
Sie können ein Element der Liste nehmen, wie unten dargestellt, und es funktionieren würde:

>>> import math 
>>> train_data=[12.1, 14.5, 56.5, 43.2] 
>>> a=train_data 
>>> a 
[12.1, 14.5, 56.5, 43.2] 
>>> another_train_data=math.log(a[1]) 
>>> another_train_data 
2.6741486494265287 
>>> 
+0

Vielen Dank für Ihre Antworten –

+0

Gern geschehen. Bitte upvote meine Antwort, wenn Sie es nützlich fanden. Vielen Dank. – tale852150

2

numpy.log kann mit einem Array

>>> import numpy 
>>> a = numpy.array([180.0, 2570.0, 770.0, 1960.0]) 
>>> b = numpy.log(a) 
>>> b 
array([ 5.19295685, 7.85166118, 6.64639051, 7.58069975]) 
+0

Ich mag deine Antwort. Ich habe es aufgewertet ... – tale852150

1

In Ihrem Beispiel verwendet werden, a ein SFeld vom Typ float ist . Es kann nicht an eine Funktion übergeben werden, die einen Gleitkommawert verwendet. Sie können jedoch jede Funktion anwenden, die dem SArray einen Float-Wert wie folgt zuweist:

import math 
log_a = a.apply(math.log)