我在工作中广泛使用了R和Python,有时我觉得它们之间的语法混乱。
在R中,如果我只想从我的数据集的 某些 功能创建模型,我可以这样做:
subset = df[1:1000, c(1,5,14:18,24)]
这将占用前1000行(是的,R从索引1开始),它将需要第1,第5,第14 到 第18和第24列
我尝试过slice
,range
和类似功能的任意组合,并且无法复制这种灵活性。最后,我只列举了所有的值。
如何在Python中完成?
从列表中选择一个元素的任意子集,其中一些是单独选择的(如上面显示的逗号),另一些是按顺序选择的(如上面显示的冒号)?
答案 0 :(得分:3)
在index_tricks
的文件中,numpy
定义了一个类实例,它使用r_
方法将标量和切片转换为枚举列表:
In [560]: np.r_[1,5,14:18,24]
Out[560]: array([ 1, 5, 14, 15, 16, 17, 24])
这是一个带有__getitem__
方法的实例,因此它使用索引语法。它将14:18
扩展为np.arange(14,18)
。它还可以使用linspace
扩展值。
所以我认为你会改写
subset = df[1:1000, c(1,5,14:18,24)]
作为
df.iloc[:1000, np.r_[0,4,13:17,23]]
答案 1 :(得分:2)
您可以在pandas中使用iloc
进行整数索引:
df.iloc[0:10000, [0, 4] + range(13,18) + [23]]
由@root评论,在Python 3中,您需要range()
df.iloc[0:10000, [0, 4] + list(range(13,18)) + [23]]
转换为列表
答案 2 :(得分:1)
试试这个,第一个方括号过滤器。第二组方括号切片。
df[[0,4]+ range(13,18)+[23]][:1000]