使用 .loc 方法同时选择多列和切片列

Lau*_*ura 2 python dataframe pandas

考虑到这个 Pandas DataFrame df:

  A   B   C   D   E   F
0
1
2
Run Code Online (Sandbox Code Playgroud)

使用 .loc 方法,我可以选择这样的特定列:

df.loc[:, ['A','B','E']]
Run Code Online (Sandbox Code Playgroud)

或者我可以切片一些列,如:

df.loc[:,'B':'E']
Run Code Online (Sandbox Code Playgroud)

我的问题是?这种方法可以允许结合这两个选项吗?例如选择第一列并切片其他列?我试过了:

df.loc[:,['A','D':'F']]
Run Code Online (Sandbox Code Playgroud)

用于选择 A、D、E、F 列。

哪个是正确的语法?

cs9*_*s95 6

您本身不能使用带有 的标签来执行此操作loc,但您可以使用位置和np.r_+ iloc(这是最接近的解决方法)来执行此操作。

f = df.columns.get_loc
df.iloc[:, np.r_[f('A'), f('D'):f('F')]]
    A   D   E
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)

这是假设您的列名是唯一的。


har*_*pan 5

你可以简单地使用 join

df[['A']].join(df.loc[:, 'D':'F'])
Run Code Online (Sandbox Code Playgroud)

输出:

A   D   E   F
Run Code Online (Sandbox Code Playgroud)