Python 如何使用pandas子集数据帧?

Python 如何使用pandas子集数据帧?,python,pandas,Python,Pandas,我想对可能相邻也可能不相邻的列进行子集划分。在这个试点案例中,只有39列,所以写出完整的列名是可能的,但很繁琐。我试图做的只是基于索引的子集列 df_sub = df.iloc[:,[10,11,29:37]] 但我得到了这个错误: File "<ipython-input-46-d9362578c302>", line 1 df_sub = df.iloc[:,[10,11,29:37]]

我想对可能相邻也可能不相邻的列进行子集划分。在这个试点案例中,只有39列,所以写出完整的列名是可能的,但很繁琐。我试图做的只是基于索引的子集列

df_sub = df.iloc[:,[10,11,29:37]]
但我得到了这个错误:

File "<ipython-input-46-d9362578c302>", line 1
    df_sub = df.iloc[:,[10,11,29:37]]
                                ^
SyntaxError: invalid syntax
文件“”,第1行
df_sub=df.iloc[:,[10,11,29:37]]
^
SyntaxError:无效语法
有没有一种方法可以使用列索引对列进行子集划分,这些列索引可能不相邻


在谷歌上搜索类似的内容,只显示了基于列名、相邻索引或分别输入每个索引(例如)的子集设置方法。如果有100个色谱柱的混合物呢?

您可以尝试以下方法:

g = lambda x,y: range(x,y)

[10,11,*g(29,37)]


时间比较:

%%timeit -n 1000000
np.r_[10,11,29:37]
每个回路12.4µs±123 ns(7次运行的平均值±标准偏差,每个1000000个回路)

每个回路338纳秒±3.94纳秒(7次运行的平均值±标准偏差,100000个回路 (各)


我不推荐这样做:
[10,11,*list(范围(29,37))]
这是一个简单的答案。谢谢,小女孩。推荐的方法是什么?事实上我现在才想到这个。一定还有其他更好的办法。等待其他答案。是的@Ch3steR,“切片”是我错过的术语。这也许就是为什么我很难找到答案的原因。今天我们学到了一些东西。你为什么不推荐你在评论中写的代码?缓慢的副作用?@user1828605:我不确定它的性能,但它似乎更快。我的意思是,我们在这里用了几微秒。所分析的唯一计算成本是调用numpy函数可能产生的任何开销
%%timeit -n 1000000
np.r_[10,11,29:37]
%%timeit -n 1000000
g = lambda x,y: range(x,y)
[10,11,*g(29,37)]