为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择在 pydatatable 中使用未格式化名称创建的列?

如何选择在 pydatatable 中使用未格式化名称创建的列?

Go
MYYA 2022-12-26 10:00:51
我创建了一个数据表,DT_EX = dt.Frame({'Year sold':[2000,2002,2004,2006],'Year Construction':[1990,1992,1994,1996]})及其观点Out[4]:    | Year sold  Year Construction-- + ---------  ----------------- 0 |      2000               1990 1 |      2002               1992 2 |      2004               1994 3 |      2006               1996[4 rows x 2 columns]在这里我们可以注意到每一列都包含两个单词之间的空格,In [7]: DT_EX.namesOut[7]: ('Year sold', 'Year Construction')我现在选择第一列,DT[:,f.Year sold] 它抛出一个错误 File "<ipython-input-5-29b1f34a6dc6>", line 1    DT[:,f.Year sold]                   ^SyntaxError: invalid syntax现在我在列名周围加上一些引号并尝试选择,In [6]: DT[:,f.`Year sold`]                                                                                                                                                          File "<ipython-input-6-a007534b786e>", line 1    DT[:,f.`Year sold`]           ^SyntaxError: invalid syntax那么如何指定这些类型的列名,我可以做一些字符串操作,比如用下划线调整空间 _ Year_sold 或 Year_Construction 等。在加载数据集时,fread() 中是否有任何选项可以处理此类列名?将所有列转换为小写或大写名称删除列名之间的所有特殊符号空间如果需要,缩短列名长度。
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

这应该工作:


In [1]: import datatable as dt                                                                                         


In [2]: DT_EX = dt.Frame({'Year sold':[2000,2002,2004,2006],'Year Construction':[1990,1992,1994,1996]})                


In [3]: DT_EX[:, dt.f['Year sold']]                                                                                    

Out[3]: 

   | Year sold

-- + ---------

 0 |      2000

 1 |      2002

 2 |      2004

 3 |      2006


[4 rows x 1 column]


In [4]:  

使用f带括号的选择器还允许使用变量进行选择:


In [6]: feature = 'Year sold'                                                                                          


In [7]: DT_EX[:, dt.f[feature]]                                                                                        

Out[7]: 

   | Year sold

-- + ---------

 0 |      2000

 1 |      2002

 2 |      2004

 3 |      2006


[4 rows x 1 column]

另外,如果您想用下划线替换空格,请执行以下操作:


In [8]: DT_EX.names = [feat.replace(' ', '_') for feat in DT_EX.names]                                                 


In [9]: DT_EX                                                                                                          

Out[9]: 

   | Year_sold  Year_Construction

-- + ---------  -----------------

 0 |      2000               1990

 1 |      2002               1992

 2 |      2004               1994

 3 |      2006               1996


[4 rows x 2 columns]


In [10]:                   

希望这可以帮助。


查看完整回答
反对 回复 2022-12-26
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信