I am reading contents of a spreadsheet into pandas. DataNitro has a method that returns a rectangular selection of cells as a list of lists. So
table = Cell("A1").table
gives
table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]] headers = table.pop(0) # gives the headers as list and leaves data
I am busy writing code to translate this, but my guess is that it is such a simple use that there must be method to do this. Cant seem to find it in documentation. Any pointers to the method that would simplify this?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Call the pd.DataFrame constructor directly:
df = pd.DataFrame(table, columns=headers) df Heading1 Heading2 0 1 2 1 3 4
Method 2
With approach explained by EdChum above, the values in the list are shown as rows. To show the values of lists as columns in DataFrame instead, simply use transpose() as following:
table = [[1 , 2], [3, 4]] df = pd.DataFrame(table) df = df.transpose() df.columns = ['Heading1', 'Heading2']
The output then is:
Heading1 Heading2 0 1 3 1 2 4
Method 3
Even without pop the list we can do with set_index
pd.DataFrame(table).T.set_index(0).T Out[11]: 0 Heading1 Heading2 1 1 2 2 3 4
Update from_records
table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]] pd.DataFrame.from_records(table[1:],columns=table[0]) Out[58]: Heading1 Heading2 0 1 2 1 3 4
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0