我一直在寻找通过python文档和论坛选择列的方法,但索引列上的每个示例都过于简单。
假设我有一个10 x 10的数据帧
df = DataFrame(randn(10, 10), index=range(0,10), columns=['A', 'B', 'C', 'D','E','F','G','H','I','J'])
到目前为止,所有文档都只是一个索引的简单例子
subset = df.loc[:,'A':'C']
要么
subset = df.loc[:,'C':]
但是当我尝试索引多个非顺序列时,我得到一个错误,就像这样
subset = df.loc[:,('A':'C', 'E')]
如果我想从A到C,E和G中选择A列,我将如何在Pandas中编入索引?看来这个逻辑不起作用
subset = df.loc[:,('A':'C', 'E', 'G':'I')]
我觉得解决方案非常简单,但我无法解决这个错误。谢谢!
df.filter(regex='[A-CEG-I]') # does NOT depend on the column order
df[ list(df.loc[:,'A':'C']) + ['E'] + list(df.loc[:,'G':'I']) ]
请注意,与基于标签的方法不同,这仅适用于按行按字母顺序排序的列。然而,这不一定是个问题。例如,如果你的列是['A','C','B']
,那么你可以用'A':'C'
替换上面的'A':'B'
。
为了完整起见,您总是可以让@Magdalena显示单独列出每列的选项,尽管随着列数的增加可能会更加冗长:
df[['A','B','C','E','G','H','I']] # does NOT depend on the column order
A B C E G H I
0 -0.814688 -1.060864 -0.008088 2.697203 -0.763874 1.793213 -0.019520
1 0.549824 0.269340 0.405570 -0.406695 -0.536304 -1.231051 0.058018
2 0.879230 -0.666814 1.305835 0.167621 -1.100355 0.391133 0.317467
只需直接选择您想要的列....
df[['A','E','I','C']]