到目前为止,我主要还是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“新手”的身份,我很想知道是否有更好的简洁方法。
谢谢
答案 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