2016-05-24 3 views
-1

Ich hatte die folgende Frage. Nehmen wir an, ich habe eine Excel-Datei mit einigen Namen in der ersten Zeile. Dann sind die nächsten, aber viele Zeilen Einträge aus einem einzigen Buchstaben (also "A", "B", "C" und so weiter).Wie würde ich eine Excel-Datei nehmen und ihre Spalten in Python in Listen umwandeln?

Mein Ziel ist es, die Spalte zu extrahieren und zu einer Liste zu machen, so dass zB für Spalte 1 die Liste in Zeile 2 beginnt, der nächste Eintrag von Zeile 3 usw. bis zum Ende ist erreicht.

Wie würde ich das in Python tun?

+0

Ihr Titel klingt wie eine einfache transponieren, die Excel bereits tun können, aber Die Frage selbst beschreibt etwas, worüber ich nicht klar bin: Die Liste für die erste Spalte würde die ganze Spalte enthalten (ohne die Kopfzeile), aber die Liste für die letzte Spalte würde die ersten 'row_length'-Einträge fehlen. Können Sie Beispieleingabe und -ausgabe bereitstellen? – TigerhawkT3

+0

@ TigerhawkT3, nein, jede Liste würde die gesamte Spalte außer der ersten Zeile enthalten. – Ryker

+0

Also einfach in Excel transponieren? – TigerhawkT3

Antwort

0

Ich fand die Antwort. Unter der Annahme, die Excel-Datei wird Test.xlsx, können wir die j-ten Spalte (mit Ausnahme der ersten Reihe) in list_j übersetzen:

book = xlrd.open_workbook("Test.xlsx") 
sheet = book.sheet_by_index(0) 

list_j = [] 

for k in range(1,sheet.nrows): 
    list_j.append(str(sheet.row_values(k)[j-1])) 
2

Ich verwendete ein Modul namens xlrd.

Einige Informationen auf diese http://www.blog.pythonlibrary.org/2014/04/30/reading-excel-spreadsheets-with-python-and-xlrd/

Und hier ist das Paket: https://pypi.python.org/pypi/xlrd

Um die erste Zeile, ausschließen und verschiedene Listen für verschiedene Spalten machen Sie etwas tun könnten, wie ...

from xlrd import open_workbook 

book = open_workbook("mydata.xlsx") 
sheet = book.sheet_by_index(0) #If your data is on sheet 1 

column1 = [] 
column2 = [] 
#... 

for row in range(1, yourlastrow): #start from 1, to leave out row 0 
    column1.append(sheet.cell(row, 0)) #extract from first col 
    column2.append(sheet.cell(row, 1)) 
    #... 

Setzen Sie den Index-1 der letzten Zeile, die Daten enthält, in den Platzhalter 'yourstrow'.

+1

Bei der Frage ging es um das Transponieren von Zeilen und Spalten, nicht darum, was Bibliotheken Excel-Dateien lesen und schreiben können. Dies beantwortet die Frage nicht und wäre besser als Kommentar geeignet.Sie können einen Kommentar hinterlassen, wenn Sie einen ausreichenden Ruf haben. – TigerhawkT3

+0

Danke, das war alles was ich brauchte. – Ryker

Verwandte Themen