Добавить значения из столбца данных в список - PullRequest
1 голос
/ 27 мая 2019

У меня есть фрейм данных с несколькими столбцами, и я хочу добавить в пустой список значения одного столбца, чтобы желаемый результат был следующим:

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

Я пробовал следующее:

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())

В любом случае, я получаю список со списками, массивами или сериями внутри него, и я хотел бы иметь непосредственно записи.

Ответы [ 5 ]

3 голосов
/ 27 мая 2019

Полагаю, вам нужен, если нужен только один столбец:

a_list = df['iso'].tolist()

Для списка расширений путем добавления элементов из повторяемого использования extend:

a_list = []
a_list.extend(df['iso'].tolist())
a_list.extend(df['country'].tolist())
print (a_list)
['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']

Другое решение - использовать numpy.ravel с транспонированием:

a_list = df[['iso','country']].values.T.ravel().tolist()
print (a_list)
['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']
2 голосов
/ 27 мая 2019

Ваша проблема возникает из-за того, что df['iso'].tolist() создает список. Список добавляется (указывается место в списке по одному индексу), поэтому вы получаете список списка. Вы можете попробовать:

a_list.extend(df['iso'].tolist())
1 голос
/ 27 мая 2019

Чтобы получить доступ к данным каждой строки в кадре данных Pandas, мы можем использовать атрибут DataFrame.iat, а затем добавить данные каждой строки в конец списка.Во-первых, цикл for выполняет итерацию по каждой строке и создает список для хранения данных текущей строки. Во-вторых, цикл for выполняет итерацию по всем столбцам и добавляет данные каждого столбца в список, после чего добавляет текущую строку в список * 1001.*

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) 
1 голос
/ 27 мая 2019

extend делает то, что вы просите. Если вы попытаетесь сделать это с append, вы можете сделать что-то вроде:

import itertools
a_list = []
a_list.append(df.iso.tolist())
a_list.append(df.country.tolist())
a_list=list(itertools.chain.from_iterable(a_list))
print(a_list)

выход

['x', 'y', 'z', 'w', 'a', 'b', 'c', 'd']
0 голосов
/ 27 мая 2019

Этого примера должно быть достаточно:

myList = df['iso'].tolist() 
print(myList)

Выход:

['x', 'y', 'z', 'w']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...