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

Schreibe einen Kommentar