TypeError: object of type 'float' has no len() & TypeError: 'float' - Objekt ist nicht durchsuchbar
Ich habe einen Datensatz importiert als DataFrame "new_data_words". Es gibt eine Spalte "name_der_seite" mit chaotisch Webseite-Namen wie "%D8%AA%D8%B5%D9%86%D9%8A%D9%81:%D8%A2%D9%84%D9...
", "%D9%85%D9%84%D9%81:IT-Airforce-OR2.png
" oder einfach "1950
". Ich will erstellen Sie eine neue Spalte 'word_count' an, um die Anzahl der Wörter in der Seite, die Namen (Wörter werden getrennt durch '_')
Hier sind meine codes:
Split Worten:
b = list(new_data_words['page_name'].str.split('_'))
new_data_words['words'] = b
Habe ich überprüft, der Typ von b ist Liste Art und len(b) ist 6035980.
Eine Probe Wert:
In [1]: new_data_words.loc[0,'words']
Out[2]: ['%D8%AA%D8%B5%D9%86%D9%8A%D9%81:%D8%A2%D9%84%D9%87%D8%A9',
'%D8%A8%D9%84%D8%A7%D8%AF',
'%D8%A7%D9%84%D8%B1%D8%A7%D9%81%D8%AF%D9%8A%D9%86']
Erstellte ich eine weitere Spalte "word_count" zu zählen, die Elemente der Liste in jeder Zeile der Spalte "Wörter". (Verwenden Schleife zu berühren die Elemente der Liste in jeder Zeile)
Aber ich hatte Fehler:
x = []
i = []
c = 0
for i in b: # i is list type, with elements are string, I checked
c=c+1
x.append(len(i))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-c0cf0cfbc458> in <module>()
6 #y = str(y)
7 c=c+1
----> 8 x.append(len(i))
TypeError: object of type 'float' has no len()
Ich weiß nicht warum, es ist float-Typ.....
Aber wenn ich nur hinzufügen, ein Druck, es funktionierte
x = []
i = []
c = 0
for i in b:
c=c+1
print len(i)
x.append(len(i))
3
2
3
2
3
1
8
...
Aber c = len(x) = 68516, viel kleiner als 6 Millionen.
Habe ich versucht zu zwingen, die Elemente zu string-wieder mal ein Fehler passiert:
x = []
for i in b:
for y in i:
y = str(y)
x.append(len(i))
TypeError Traceback (most recent call last)
<ipython-input-164-c86f5f48b80c> in <module>()
1 x = []
2 for i in b:
----> 3 for y in i:
4 y = str(y)
5 x.append(len(i))
TypeError: 'float' object is not iterable
Denke ich, dass ich die Liste Typ und ist durchsuchbar...
Wieder, wenn ich nicht Anhängen, aber nur drucken, es hat geklappt:
x = []
for i in b:
for y in i:
y = str(y)
print (len(i))
Anderes Beispiel:
Das funktioniert:
a = []
for i in range(10000):
a.append(len(new_data_words.loc[i,"words"]))
Geändert, um einen dynamischen Bereich, es funktioniert nicht:
a = []
for i in range(len(b)):
a.append(len(new_data_words.loc[i,"words"]))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-20-f9d0af3c448f> in <module>()
1 a = []
2 for i in range(len(b)):
----> 3 a.append(len(new_data_words.loc[i,"words"]))
TypeError: object of type 'float' has no len()
Dieser funktioniert entweder nicht,......
a = []
for i in range(6035980):
a.append(len(new_data_words.loc[i,"words"]))
Scheint, wie es gibt einige von der Norm abweichende in der Liste. Aber ich weiß nicht, was das ist oder wie es zu finden.
Jemand helfen kann, bitte?
InformationsquelleAutor M.Z | 2015-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du falsch. Die Fehler, die Sie sehen, machen es 100% klar, dass
b
ist iterierbar, die mindestens einenfloat
(ob die anderen Elemente sindstr
oder nicht, will ich nicht spekulieren).Tun versuchen:
und du wirst sehen, es gibt mindestens eine
float
. Oder diese nur zu drucken der nicht-wiederholenden Komponentenb
:InformationsquelleAutor ShadowRanger