如何按位置对 Pandas 数据框进行切片?

Posted

技术标签:

【中文标题】如何按位置对 Pandas 数据框进行切片?【英文标题】:How to slice a Pandas Data Frame by position? 【发布时间】:2012-08-14 20:15:53 【问题描述】:

我有一个 Pandas 数据框对象,它有 1000 行和 10 列。我只想对数据框进行切片并取前 10 行。我怎样才能做到这一点?我一直在尝试使用它:

>>> df.shape
(1000,10)
>>> my_slice = df.ix[10,:]
>>> my_slice.shape
(10,)

my_slice 不应该是前十行,即。一个 10 x 10 的数据框?我怎样才能得到前十行,这样my_slice 是一个 10x10 的数据框对象?谢谢。

【问题讨论】:

【参考方案1】:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.head.html?highlight=head#pandas.DataFrame.head

df2 = df.head(10)

应该做的伎俩

【讨论】:

【参考方案2】:

为方便起见,您也可以这样做:

df[:10]

【讨论】:

这似乎没有为我复制列名。【参考方案3】:

df.ix[10,:] 为您提供第 10 行的所有列。在您的情况下,您需要直到第 10 行的所有内容,即df.ix[:9,:]。请注意,切片范围的右端包含在内:http://pandas.sourceforge.net/gotchas.html#endpoints-are-inclusive

【讨论】:

这是贬义的 .ix 不工作你应该删除它,“df[:10]”就足够了【参考方案4】:

我可以看到至少三个选项:

1.

df[:10]

2.使用head

df.head(10)

对于 n 的负值,此函数返回除 最后n行,相当于df[:-n] [Source]。

3.使用iloc

df.iloc[:10]

【讨论】:

【参考方案5】:

DataFrame[:n] 将返回前 n 行。

【讨论】:

以上是关于如何按位置对 Pandas 数据框进行切片?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据日期时间索引对 Pandas 数据框进行切片

沿着 pandas 数据框中的列进行高效的跨步切片

使用索引值列表对 pandas 多索引数据框进行切片 [重复]

Pandas:按整数进行多索引二级切片

如何对不同长度的 Python Pandas groupby 对象进行切片?

使用 pandas str.find 方法对数据框列中的字符串进行切片