2017-07-08 123 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)

这份名单可以在任何事实列表,只要在列表中的元素是从你的数据帧的有效列名。