Say I have a DataFrame that looks like this:
df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
columns=['Col 1', 'Col 2', 'Col 3'])
>>> df
Col 1 Col 2 Col 3
0 1 2 3
1 4 5 6
2 7 8 9
Is there a Pandas way of returning the DataFrame as a list of lists with the headers included?
I can return the headers and values as lists as follows
>>> df.columns.values.tolist()
['Col 1', 'Col 2', 'Col 3']
>>> df.values.tolist()
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> df.tolist()
But how could I return the following result?
[['Col 1', 'Col 2', 'Col 3'], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
In Python tolist() function is used to convert a DataFrame to a list and this function can be used in the below example and convert the required DataFrame into a list of strings. This function always returns a list of the values.
Method 1: Using collect() method By converting each row into a tuple and by appending the rows to a list, we can get the data in the list of tuple format. Example: Converting dataframe into a list of tuples.
To access the names of a Pandas dataframe, we can the method columns(). For example, if our dataframe is called df we just type print(df. columns) to get all the columns of the Pandas dataframe.
You can get the column names from pandas DataFrame using df. columns. values , and pass this to python list() function to get it as list, once you have the data you can print it using print() statement.
Use double transpose with reset_index
:
print (df.T.reset_index().values.T.tolist())
[['Col 1', 'Col 2', 'Col 3'], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
Or nicer insert:
a = df.columns.values.tolist()
b = df.values.tolist()
b.insert(0, a)
print (b)
[['Col 1', 'Col 2', 'Col 3'], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
You have two lists, so using:
[df.columns.values.tolist()] + df.values.tolist()
>>> [['Col 1', 'Col 2', 'Col 3'], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With