2016-08-08 165 views
1

在這裏,在我的代碼,我從CSV讀取數據:爲什麼pandas.Dataframe.drop()返回None?

data = pandas.read_csv('dataset/job_functions.csv', names=["job","category"] ,skiprows=1).dropna().reindex() 
num_jobs = data["job"].size 

然後我想這「類」的標籤不等於行下降到i

data = data.drop(data[data.category!=i].index,inplace = True) 
print(data.head()) 

即使通過列表下降索引的返回None:

data = data.drop(data.index[[1,2,3]],inplace = True) 

錯誤消息:

Traceback (most recent call last): 
File "sample.py", line 162, in 
    delete_common_words(27) 
File "sample.py", line 92, in delete_common_words 
    print(data.head()) 
AttributeError: 'NoneType' object has no attribute 'head' 

這裏的數據,直到我用drop()

            job category 
0 офис менеджер реализация гербицидовоформлени...   2 
1 менеджер отдел продажа работа с существующий...  27 
2 ведущий бухгалтер работа с вендер и поставщи...   1 
3 менеджер по продажа и продвижение продукт ус...  27 
4 юрист проведение юридический экспертиза прое...  13 
+5

但是你通過'就地= TRUE;所以它會返回'None'這是正確的行爲,如果你設置'就地= FALSE'它會返回修改後的DF – EdChum

+0

要添加到上面的評論你會發現相應的行已經從你的框架中被摻雜了。 – kpie

回答

1

它看起來像需要boolean indexing

import pandas as pd 

data = pd.DataFrame({'category':['a','b', 'c']}) 
print (data) 
    category 
0  a 
1  b 
2  c 

i = 'a' 
print (data[data.category != i]) 
    category 
1  b 
2  c 

print (data[~data.category.isin(['b','c'])]) 
    category 
0  a 

而作爲EdChum解釋說,如果使用inplace=True其返回None,所以你可以使用:

#omit inplace=True 
data = data.drop(data[data.category!=i].index) 

或者:

#remove assigning 
data.drop(data[data.category!=i].index,inplace = True) 
相關問題