如何在pandas中按位置选择列

时间:2015-10-09 18:58:43

标签: python pandas

我有一个包含数十列的数据框。我想在整个数据框中选择多个列。有没有比写出所有列名更好的方法?例如,我尝试了以下操作,但我没有工作:

cols = df_all.columns[10:21]
cols2 = df_all.columns[-1]

df_all[cols : cols2].head()

我想我可以先创建两个数据帧然后加入它们,但我想知道是否有更好的方法。

4 个答案:

答案 0 :(得分:2)

移动:并添加|,你就在那里,但我添加了一些代码以使示例更清晰。

import pandas as pd
import numpy as np
import string
columns=list(string.ascii_uppercase)
df = pd.DataFrame(np.random.randn(10,26), columns=columns)
cols = df.columns[10:21]
cols2 = df.columns[-1:]
df[cols | cols2]

在原始代码中,cols2只是索引中的最后一个元素,而不是上一个列中所有列的索引(这只是一个元素)。你的最后一行试图在两个索引之间切片(我认为),但我认为你想要的是将两者结合起来(使用|

答案 1 :(得分:0)

您可以使用df_all.ix(location)按位置访问列,或使用df_all.icol(int)整数值。你也可以这样做:

df_all[df_all.columns[2]]

答案 2 :(得分:0)

如果要组合列索引,也可以执行此操作:

df_all[df_all.columns[10:21] | df_all.columns[-1:]]

答案 3 :(得分:0)

如果要按列名对列进行排序,请使用pandas;如果要按列数选择,请使用.loc()

.iloc()

应用 import pandas as pd df=pd.DataFrame([[1, 2,5,2], [5,4, 5,4], [7,7, 8,1], [7,6,9,2]], columns=['col_1', 'col_2', 'col_3', 'col_4']) df col_1 col_2 col_3 col_4 0 1 2 5 2 1 5 4 5 4 2 7 7 8 1 3 7 6 9 2

loc()

在第2列至第4列上应用 df_names=df.loc[:,'col_2':'col_4'] df_names col_2 col_3 col_4 0 2 5 2 1 4 5 4 2 7 8 1 3 6 9 2

.iloc