如何按列名称切片数据框的多个部分?

SCool 2 python pandas

如何获得第一列,然后添加另一个切片?

例如:

import pandas as pd
df = pd.DataFrame(pd.np.random.rand(6,6), columns = list('abcdef'))

          a         b         c         d         e         f
0  0.147163  0.710360  0.069732  0.180949  0.694066  0.639505
1  0.771643  0.094805  0.371702  0.177538  0.089168  0.420331
2  0.431394  0.790537  0.378049  0.402930  0.350409  0.827950
3  0.421411  0.451595  0.703630  0.469526  0.612122  0.076728
4  0.854117  0.302925  0.664647  0.664098  0.959504  0.637122
5  0.659791  0.525526  0.007151  0.448761  0.738571  0.349142

我正在尝试获取专栏a,以及之后的所有专栏c

这给我只是列c,d,e,f

df.loc[:'a', 'c':]

这根本不起作用:

df.loc['a':'a', 'c':]

我做了几次尝试,但它们只是随机猜测,我确实无法在线找到解决方案。

注意:我正在处理一个巨大的真实数据框,因此写像这样的单个列名将是不切实际的 df.loc[:,['a','c','d','e','f]]

jezrael.. 5

我理解的问题是如何通过列名进行选择。

这并不容易,因为首先需要在select by处定位Index.get_loc并将其传递给numpy.r_select by DataFrame.iloc

a = df.columns.get_loc('a')
b = df.columns.get_loc('c')
c = len(df.columns)

df = df.iloc[:, np.r_[a, b:c]]
print (df)
          a         c         d         e         f
0  0.210653  0.218035  0.845753  0.456271  0.279802
1  0.932892  0.909715  0.043418  0.707115  0.483889
2  0.444221  0.040683  0.332754  0.947120  0.617660
3  0.368875  0.206132  0.165066  0.361817  0.863353
4  0.509402  0.950252  0.815966  0.322974  0.972098
5  0.987351  0.655923  0.405653  0.257348  0.082653