我有一个包含数十列的数据框。我想在整个数据框中选择多个列。有没有比写出所有列名更好的方法?例如,我尝试了以下操作,但我没有工作:
cols = df_all.columns[10:21]
cols2 = df_all.columns[-1]
df_all[cols : cols2].head()
我想我可以先创建两个数据帧然后加入它们,但我想知道是否有更好的方法。
答案 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