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

2024-04-25 17:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到数据帧df:

  A   B   C   D   E   F
0
1
2

使用.loc方法,我可以选择如下特定列:

df.loc[:, ['A','B','E']]

或者我可以将一些列切分为:

df.loc[:,'B':'E']

我的问题是?这个方法能把这两个选项结合起来吗?例如,选择第一列和切片其他列? 我试过:

df.loc[:,['A','D':'F']]

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

哪个是正确的语法?你知道吗


Tags: 数据方法df选项语法切片loc
3条回答

您只需使用join即可

df[['A']].join(df.loc[:, 'D':'F'])

输出:

A   D   E   F

本机不能使用带有loc的标签来实现这一点,但是可以使用positions和^{}+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

这是基于列名是唯一的假设。你知道吗

pd.concatmapslices

这是一个通用的方法,应该像预期的那样工作。你知道吗

sublocs = [slice('A'), slice('D', 'F')]
loc = lambda s: df.loc[:, s]
pd.concat(map(loc, sublocs), axis=1)

   A  D  E  F
0  1  1  1  1
1  1  1  1  1
2  1  1  1  1

完全讨厌的变种

sublocs = [slice('A'), slice('D', 'F')]
pd.concat(map(df.T.loc.__getitem__, sublocs)).T

相关问题 更多 >