Добавить значения из столбца dataframe в список

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

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

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

Так вам нужно a_list = df['iso'].tolist() ?

jezrael 27.05.2019 09:48

Если нет, то какой вывод ожидается от вашего образца DataFrame?

jezrael 27.05.2019 09:49

если вы добавляете к списку, вы получаете список в списке. поэтому вместо добавления просто получите свой список напрямую, проблема решена.

Paritosh Singh 27.05.2019 09:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
11
3
30 238
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

Выход:

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

Мне нужно добавить результаты несколько раз через цикл, так что это не сработает. Извините, что не указал это в моем вопросе

Javier Lopez Tomas 27.05.2019 09:55
Ответ принят как подходящий

Вы можете попробовать этот скрипт, если вам нужно добавить только один столбец:

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']

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

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

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']

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

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) 

Пожалуйста, отредактируйте свой ответ и добавьте объяснение, чтобы выполнить рекомендации stackoverflow для хороших ответов.

Florian 27.05.2019 11:27

Другие вопросы по теме