Basically I am trying to do the opposite of How to generate a list from a pandas DataFrame with the column name and column values?
To borrow that example, I want to go from the form:
data = [['Name','Rank','Complete'], ['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]] which should output:
Name Rank Complete One 1 1 Two 2 1 Three 3 1 Four 4 1 Five 5 1 However when I do something like:
pd.DataFrame(data) I get a dataframe where the first list should be my colnames, and then the first element of each list should be the rowname
EDIT:
To clarify, I want the first element of each list to be the row name. I am scrapping data so it is formatted this way...
1 Answer
One way to do this would be to take the column names as a separate list and then only give from 1st index for pd.DataFrame -
In [8]: data = [['Name','Rank','Complete'], ...: ['one', 1, 1], ...: ['two', 2, 1], ...: ['three', 3, 1], ...: ['four', 4, 1], ...: ['five', 5, 1]] In [10]: df = pd.DataFrame(data[1:],columns=data[0]) In [11]: df Out[11]: Name Rank Complete 0 one 1 1 1 two 2 1 2 three 3 1 3 four 4 1 4 five 5 1 If you want to set the first column Name column as index, use the .set_index() method and send in the column to use for index. Example -
In [16]: df = pd.DataFrame(data[1:],columns=data[0]).set_index('Name') In [17]: df Out[17]: Rank Complete Name one 1 1 two 2 1 three 3 1 four 4 1 five 5 1 1