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