2017-07-08 122 views
2

我試圖實現一個功能,可自動執行此操作:請刪除功能

del data['method_code'] 
del data['aqi'] 
del data['local_site_name'] 
del data['cbsa_name'] 

我有這樣的功能:

def del_data_func(data,columns): 
    data[columns] = data[columns].apply(lambda x: del(x)) 
    return data 
del_list = data.columns[['method_code','aqi','local_site_name','cbsa_name']] 
del_data_func (data, del_list) 

我如何能實現它正確的方式,避免任何錯誤像這樣:

data[columns] = data[columns].apply(lambda x: del(x)) 
SyntaxError: invalid syntax 

回答

1

我不知道,如果是lambda要求,否則一個辦法是loop: 如果df是:

col1 col2 col3 col4 col5 
0  1  1  1  1  1 
1  2  2  2  2  2 
2  3  3  3  3  3 
3  4  4  4  4  4 
4  5  5  5  5  5 

然後,函數可以寫爲:

def del_data_func(data,columns): 
    for column_name in columns: del data[column_name] 

現在,呼叫功能:

del_list = ['col2', 'col4'] 
del_data_func (data, del_list) 
print(data) 

輸出:col2col4被去除之後:

col1 col3 col5 
0  1  1  1 
1  2  2  2 
2  3  3  3 
3  4  4  4 
4  5  5  5 
+1

感謝您的答覆! – dodo4545

3

爲什麼不試試這個?

data.drop(['method_code', 'aqi', 'local_site_name', 'cbsa_name'], axis=1, inplace=True)

這份名單可以在任何事實列表,只要在列表中的元素是從你的數據幀的有效列名。