pass openpyxl Daten pandas
Bin ich-Spaltung "vollständiger name" Felder "Vorname", Vorname" und "Nachname" Felder von Daten aus einer excel-Datei. Ich konnte nicht herausfinden, wie zu tun, dass in pandas, so wandte ich mich openpyxl. Ich habe die Variablen aufteilen, wie ich mir gewünscht hatte. Aber, da das hinzufügen von Spalten zu openpyxl für die neuen Felder ist nicht einfach, ich dachte, ich würde übergeben Sie die Werte an pandas.
Ich bin der Erzeugung der dataframe, die ich brauche, wenn ich den code ausführen, aber sobald ich den df zu ExcelWriter, nur die Letzte Zeile ist Hinzugefügt, um die Excel-Datei. Die Daten in den richtigen stellen, obwohl.
Hier der code:
for cellObj in range(2, sheet.max_row+1):
#print cellObj
id = sheet['A' + str(cellObj)].value
fullname = sheet['B' + str(cellObj)].value.strip()
namelist = fullname.split(' ')
for i in namelist:
firstname = namelist[0]
if len(namelist) == 2:
lastname = namelist[1]
middlename = ''
elif len(namelist) == 3:
middlename = namelist[1]
lastname = namelist[2]
elif len(namelist) == 4:
middlename = namelist[1]
lastname = namelist[2] + " " + namelist[3]
if (namelist[1] == 'Del') | (namelist[1] == 'El') | (namelist[1] == 'Van'):
middlename = ''
lastname = namelist[1] + " " + namelist[2]
df = pd.DataFrame({'personID':id,'lastName':lastname,'firstName':firstname,'middleName':middlename}, index=[id])
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1', columns=['ID','lastName','firstName','middleName'])
writer.save()
Irgendwelche Ideen?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Dinge. Erstens, der code wird immer nur gehen, erhalten Sie eine Zeile, weil Sie die Werte überschreiben jedes mal geht es ein, wenn test. zum Beispiel,
Diese weist einen string an die variable
lastname
. Sie sind nicht Anhängen an eine Liste, Sie sind nur die Zuweisung einer Zeichenfolge. Dann, wenn Sie Ihre dataframe,df = pd.DataFrame({'personID':id,'lastName':lastname,...
Ihr mit diesem Wert, so dass der dataframe wird immer nur halten Sie die Zeichenfolge. Sinn? Wenn Sie müssen dies tun, mit openpyexcel, versuchen Sie so etwas wie:Aber ich denke, dein Leben wird letztlich viel einfacher, wenn Sie nur herausfinden, wie dies mit den pandas. Es ist in der Tat ganz einfach. Probieren Sie etwas wie dieses:
FWIW openpyxl 2.4 macht es ziemlich einfach zu konvertieren alle oder einen Teil einer Excel-Tabelle, um ein Pandas Dataframe:
ws.values
ist ein iterator für alle, die Werte auf dem Blatt. Es hat auch einen neuenws.iter_cols()
Methode, die Ihnen erlauben, um zu arbeiten direkt mit den Spalten.Es ist derzeit (April 2016) zur Verfügung, der als alpha-version und kann installiert werden, mit
pip install -U --pre openpyxl
Würde der code dann Aussehen ein bisschen wie diesem:
ws.values
aber wie der code zeigt, scheint es nicht notwendig, für Ihre Aufgabe.