2017-10-24 5 views
0

Ich habe ein Datenframe mit einer Spalte namens "Äußerungen", die Strings enthält (z. B .: "Ich möchte ein Bier haben" ist die erste Zeile). Was ich brauche ist, einen neuen Datenrahmen zu erstellen, der die Nummer jedes Buchstabens jeder Zeile von "Äußerungen" im Alphabet enthalten wird. Dies bedeutet, dass zum Beispiel im Falle von "Ich möchte ein Bier haben", ich die folgende Zeile bekommen muss: 9 23114141 81225 1 25518, da "I" der 9. Buchstabe des Alphabets ist, "W" der 23. und bald. Beachten Sie, dass die Leerzeichen "" beibehalten werden sollen. Was ich bisher getan haben ist folgende:Python - Erstellen von Datenrahmen durch Abrufen der Nummern von Buchstaben

for word in df2[['Utterances']]: 
    for character in word: 
     new.append(ord(character.lower())-96) 
    str1 = ''.join(str(e) for e in new) 

Die oben kehrt die verkettete Zeichenfolge. Die obige Schleife iteriert jedoch nur einmal und die von str1 zurückgegebene Zeichenfolge weist nicht die erforderlichen Leerzeichen ("") auf. Und natürlich kann ich keine Möglichkeit finden, diese Zeilen in einen neuen Datenrahmen einzufügen.

Jede Hilfe würde sehr geschätzt werden. Danke.

Antwort

2

können Sie tun

In [5572]: df 
Out[5572]: 
      Utterances 
0 I wanna have a beer 

In [5573]: df['Utterances'].apply(lambda x: ' '.join([''.join(str(ord(c)-96) for c in w) 
              for w in x.lower().split()])) 
Out[5573]: 
0 9 23114141 81225 1 25518 
Name: Utterances, dtype: object 
+1

OMG 6 Minuten früher? – Dark

0
for word in ['I ab c def']: 
    for character in word: 
     if character == ' ': 
      new.append(' ') 
     else: 
      new.append(ord(character.lower())-96) 
     str1 = ''.join(str(e) for e in new) 

Ausgabe

9 12 3 456 
0

Verwendung Wörterbuch und erhalten mit Strings Lets wenn Sie Alphabeten haben d.h

import string 

dic = {j:i+1 for i,j in enumerate(string.ascii_lowercase[:26])} 
dic[' ']= ' ' 
df['Ut'].apply(lambda x : ''.join([str(dic.get(i)) for i in str(x).lower()])) 

Ausgang:

 
        Ut      new 
0 I wanna have a beer 9 23114141 81225 1 25518 

Verwandte Themen