2016-08-25 2 views
1

После некоторого исследования csv/pandas/etc для управления огромным CSV-файлом я решил использовать pandas для нарезки только необходимой мне информации. Теперь я могу получить только то, что мне нужно, используя фильтр i.e. «Name» = «Greg», где я просто вижу строки, когда в столбце Name есть Greg. Однако я хотел бы создать список pyhton со всей информацией определенного столбца (например, City). Как я мог это сделать? Тогда я буду работать только со списком для сортировки, подсчет и т.д.Использование Pandas для выделения и создания списков

Что у меня есть:

import pandas as pd 

all_data = pd.read_csv(
    'myfile.csv',   # file name 
    sep=',',     # column separator 
    quotechar='"',    # quoting character 
    encoding='utf-16', 
    na_values=0,    # fill missing values with 0 
    usecols=[0,1,3],   # columns to use 
    decimal='.')    # symbol for decimals 



slice1 = all_data[all_data['Name'] == 'Greg'] 
print (slice1) 

Пример печати (slice1):

enter image description here

ответ

1

Вы можете использовать ix с tolist:

#output is Series - column City 
slice1 = all_data.ix[all_data['Name'] == 'Greg', 'City'] 

#generate list from Series 
L = all_data.ix[all_data['Name'] == 'Greg', 'City'].tolist() 

Образец:

import pandas as pd 

all_data = pd.DataFrame({'Name':['Greg','Greg','Greg','Adam'], 
         'Coutry':['US','UK','UK','UK'], 
         'City':['LA','LD','RE','LB']}, 
         index=[221,564,800,500]) 

print (all_data) 
    City Coutry Name 
221 LA  US Greg 
564 LD  UK Greg 
800 RE  UK Greg 
500 LB  UK Adam 

slice1 = all_data.ix[all_data['Name'] == 'Greg', 'City'] 
print (slice1) 
221 LA 
564 LD 
800 RE 
Name: City, dtype: object 

L = all_data.ix[all_data['Name'] == 'Greg', 'City'].tolist() 
print (L) 
['LA', 'LD', 'RE'] 
+0

Большое спасибо! Отличный вход! Похоже, Pandas не нравится формат данных моего City Column, так как он получает сообщение об ошибке: KeyError: «Город». Любая идея почему? – Gonzalo

+0

Может быть, какое-то место перед словом 'City', как' 'City''? Проверьте его на 'print (all_data.columns.tolist())' – jezrael

+0

humm .. Я получаю: ['\ ufeffCity', 'Name', 'Country']. Не уверен, что это \ ufeff :( – Gonzalo

Смежные вопросы