Question: I have a dataframe with several columns, and I want to append to an empty list the values of one column, so that the desired output would be the following:

```
empty_list = [value_1,value_2,value_3...]

```

I have tried the following:

```
df = pd.DataFrame({'country':['a','b','c','d'],
      'gdp':[1,2,3,4],
      'iso':['x','y','z','w']})
a_list = []

a_list.append(df['iso'])
a_list.append(df['iso'].values)
a_list.append(df['iso'].tolist())

```

Either way, I get a list with lists, numpy arrays or series inside it, and I would like to have directly the records.

Answer: 
Your problem arises from the fact that `df['iso'].tolist()` creates a list. The list is appended (given a place in the list at the single index), so you get a list of list. You can try:

```
a_list.extend(df['iso'].tolist())

```
To access the data of each row of the Pandas dataframe we can use DataFrame.iat attribute and then we can append the data of each row to the end of the list.
In first for loop iterate over each row and create a list to store the data of the current row 
In second for loop iterate over all the columns and append the data of each column to the list after that append the current row to the list

```
df = pd.DataFrame({'country':['a','b','c','d'],'gdp':[1,2,3,4],'iso':['x','y','z','w']})
a_list = []
for i in range((df.shape[0])):
cur_row =[]
for j in range(df.shape[1]):
    cur_row.append(df.iat[i, j])            
a_list.append(cur_row) 

```