как мне сгенерировать список из ‘pandas.core.frame.Фрейм данных» ? Текущий результат — ошибка типа: строковые индексы должны быть целыми числами

#python-3.x #pandas #dataframe #csv #typeerror

#python-3.x #pandas #dataframe #csv #ошибка типа

Вопрос:

Я создал pandas.core.frame.Фрейм данных, использующий pandas для работы с файлом csv. В этом csv-файле есть столбец с названиями предприятий, столбцы с городом этих предприятий и многое другое.

 import pandas as pd

csv_data = pd.read_csv('cb_sample.csv')
 

Я заинтересован в создании списка из csv_data всех названий компаний, которые расположены в Нью-Йорке. Я попытался выполнить приведенный ниже код:

 names = [obj['city'] for obj in csv_data if obj['city'] == 'New York']
print(names)
 

Это привело к ошибке типа: строковые индексы должны быть целыми числами.

Мне нужно создать список имен, чтобы я мог работать с ними для простого проекта flask.

Ответ №1:

Здесь вам не нужен явный цикл, и именно он вызывает ошибку.

for x in y где y dataframe перебирает имена столбцов (так же, как for k in dict перебирает ключи).

Вместо этого просто отфильтруйте строки по городу, затем используйте tolist :

 names = obj[obj['city'] == 'New York']['names'].tolist()
 

Также можно выполнить с помощью .loc :

 names = obj.loc[obj['city'] == 'New York', 'names'].tolist()