通过索引(列)号选择pandas数据框中的列

时间:2018-11-01 04:27:23

标签: python r pandas dataframe

到目前为止,我主要还是R用户,而我现在正尝试使用Python做得更好,所以请记住这一点,因为我可能没有以Python的方式思考...

无论如何,我想按列位置对pandas数据帧进行子集化,例如,我将在其中选择前2列,第4列,然后选择最后两列。

我用于此的代码如下:

df01 = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 10)),
                columns=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i','j'])
df01.iloc[:,list(range(0,2)) + list([3]) + list(range(-3,-1))]

我通过本质上用所需的列创建3个列表来进行子集设置,但我认为必须有一种更好的方法来执行此操作,因为这对我来说似乎太麻烦了。在R中,我可以做一个简单的事情:

df01[c(1:2,4,9:10)]

再次,这可能就是这样,但是鉴于我作为python“新手”的身份,我很想知道是否有更好的简洁方法。

谢谢

1 个答案:

答案 0 :(得分:2)

请记住,Python的索引为零。在这里,您有十列,但最大索引将是九列。您可以在pandas中执行以下操作:

df01.iloc[:, [0,1,3,8,9]]

   a  b  d  i  j
0  6  0  9  9  0
1  7  9  9  4  4
2  1  3  4  0  4
3  4  6  1  7  0
4  4  6  3  1  2
5  5  6  2  9  1
6  0  6  6  6  2
7  8  2  0  5  5
8  4  7  5  8  4
9  2  3  6  2  9