考虑到此Pandas DataFrame 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列。
哪种语法正确?
答案 0 :(得分:4)
您不能自然地使用带有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
这是基于您的列名是唯一的假设。
答案 1 :(得分:4)
您可以简单地使用join
df[['A']].join(df.loc[:, 'D':'F'])
输出:
A D E F
答案 2 :(得分:1)
pd.concat
和map
slice
s 这是一种通用方法,应该可以按预期工作。
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