2016-08-25 35 views
1

經過對csv/pandas/etc的一些研究來操作一個巨大的csv文件,我決定使用熊貓來分割我需要的信息。 現在,我只需使用過濾器即「Name」=「Greg」即可獲得我需要的內容,其中只有當列名稱具有Greg時纔會看到行。 但是,我現在想創建一個pyhton列表,包含特定列(即City)的所有信息。我怎麼能這樣做? 然後,我將與清單只是工作進行排序,計算等使用熊貓來分割和創建列表

我有什麼:打印(slice1)的

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) 

例子:

enter image description here

回答

1

您可以使用ixtolist

#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

非常感謝!偉大的投入!看起來像熊貓不喜歡我的城市列的數據格式,因爲它得到一個錯誤說:KeyError:'城市'。任何想法爲什麼? – Gonzalo

+0

也許像''City''這樣的單詞'City'前面有空格?通過print(all_data.columns.tolist())來檢查它。' – jezrael

+0

humm ..我得到:['\ ufeffCity','Name','Country']。不知道這個\ ufeff是什麼:( – Gonzalo