【发布时间】:2016-05-02 11:57:14
【问题描述】:
我有一张桌子:
我想切前三列,我该怎么做?
我看过另一个帖子:Finding top N columns for each row in data frame,但这对我来说太过分了。
我试过了:
df1 = df.iloc[:,0:3]
但这给出了错误:IndexingError: Too many indexers
编辑:
添加了ix
的更详细的代码 cols = [col for col in df.columns if col != 'stream']
candidates = df.loc[url,cols]
dfSorted = candidates.sort_values(ascending=False)
big_three = dfSorted.ix[:,0:3]
【问题讨论】:
-
你的熊猫版本是什么?我猜想用 .iloc 切片列是后来介绍的。它在 v18.0 上运行良好。如果我没记错的话,.ix 可能适用于早期版本。
-
@ayhan 我有版本 0.17.1
-
@Stanko -
print df.index和print df.columns是什么? -
@jezrael 在执行 df.columns 时,我得到:“系列”对象没有属性“列”。那么
.loc返回一个 Series 对象? -
是的,问题是
dfSorted是Serie,而不是DataFrame,所以你不能索引Serie中的列,因为没有列。