Python 如何从pydatatable dataframe中删除列列表?
我创建了一个datatable框架,如下所示:Python 如何从pydatatable dataframe中删除列列表?,python,py-datatable,Python,Py Datatable,我创建了一个datatable框架,如下所示: comidas_gen_dt = dt.Frame({ 'country':list('ABCDE'), 'id':[1,2,3,4,5], 'egg':[10,20,30,5,40], 'veg':[30,40,10,3,5], 'fork':[5,10,2,1,9], 'beef':[90,50,20,None,4]}) 我已经创建了一个自定义函数,用于从框架DTas中选择所需列的列表 def
comidas_gen_dt = dt.Frame({
'country':list('ABCDE'),
'id':[1,2,3,4,5],
'egg':[10,20,30,5,40],
'veg':[30,40,10,3,5],
'fork':[5,10,2,1,9],
'beef':[90,50,20,None,4]})
我已经创建了一个自定义函数,用于从框架DT
as中选择所需列的列表
def pydt_select_cols(DT, *rmcols):
return DT[:, *dt_cols]
因此,以下是从DT中删除列的推荐语法:
DT[:, f[:].remove([f.a, f.b, f.c])
按照DT的上述语法,我创建了另一个自定义函数,将列列表保留为
def pydt_remove_cols(DT, *rmcols):
dt_cols = [*rmcols]
return DT[:, f[:].remove(dt_cols)]
我正在执行这个函数
pydt\u remove\u cols(comidas\u gen\u dt,'id','country','egg')
这是一个错误
TypeError:计算列不能用于.remove()
您能帮助我如何继续吗?从框架中删除列(或行)很简单:使用通常用于选择这些列的任何语法,然后附加pythondel
关键字
因此,如果要删除列'id'
,'country'
和'egg'
,请运行
>>> del comidas_gen_dt[:, ['id','country','egg']]
>>> comidas_gen_dt
| veg fork beef
-- + --- ---- ----
0 | 30 5 90
1 | 40 10 50
2 | 10 2 20
3 | 3 1 NA
4 | 5 9 4
[5 rows x 3 columns]
如果要保持原始帧不被修改,然后选择一个新帧并删除某些列,最简单的方法是先复制帧,然后使用del
操作:
>>> DT = comidas_gen_dt.copy()
>>> del DT[:, columns_to_remove]
(请注意,.copy()
制作浅拷贝,即其成本通常可以忽略不计)
您还可以使用f[:].remove()方法。有点奇怪,它没有像您编写的那样工作,但是从字符串列表到f
-符号列表非常简单:
def pydt_remove_cols(DT, *rmcols):
return DT[:, f[:].remove([f[col] for col in rmcols])]
在这里,我使用了一个事实,即f.A
与f[“A”]
相同,其中内部字符串“A”
也可以替换为任何变量。试试看,不会有效果。是的,我知道第一种方法,我已经对如何使用进行了完整的说明。在多个列上删除。再次感谢您的快速回复