我有一个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的数据框对象?谢谢。
my_slice
qacovj5a1#
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.head.html?highlight=head#pandas.DataFrame.head
df2 = df.head(10)
应该可以
b4wnujal2#
您也可以这样做作为一个方便:df[:10]
df[:10]
56lgkhnf3#
有很多种方法可以做到这一点。下面我们将讨论至少三种选择。为了保留原始 Dataframe df,我们将切片 Dataframe 分配给df_new。最后,在章节时间比较中,我们将使用随机 Dataframe 显示不同的执行时间。
df
df_new
df_new = df[:10] # Option 1.1 # or df_new = df[0:10] # Option 1.2
使用head
head
df_new = df.head(10)
对于n的负值,此函数返回除最后n行之外的所有行,等效于df[:-n]Source(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html)。
df[:-n]
使用iloc
iloc
df_new = df.iloc[:10] # Option 3.1 # or df_new = df.iloc[0:10] # Option 3.2
对于这种特定情况,我们使用time.perf_counter()来度量执行时间。
time.perf_counter()
method time 0 Option 1.1 0.00000120000913739204 1 Option 1.2 0.00000149995321407914 2 Option 2 0.00000170001294463873 3 Option 3.1 0.00000120000913739204 4 Option 3.2 0.00000350002665072680
由于有各种各样的变量可能影响执行时间,这可能会根据所使用的 Dataframe 等因素而改变。
10
df_new = df[:5]
将返回包含前5行的 Dataframe 。
5
df_new = df.apply(lambda x: x[:10]) # or df_new = df.apply(lambda x: x.head(10))
但是,请注意,存在strong opinions on the usage of .apply(),对于本例,它远非必需的方法。
vyswwuz24#
df.ix[10,:]为您提供了从第10行开始的所有列。在您的示例中,您需要直到第10行df.ix[:9,:]为止的所有列。请注意,切片范围的右端包括第10行:http://pandas.sourceforge.net/gotchas.html#endpoints-are-inclusive
df.ix[10,:]
df.ix[:9,:]
rkue9o1l5#
DataFrame[:n]将返回前n行。
DataFrame[:n]
5条答案
按热度按时间qacovj5a1#
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.head.html?highlight=head#pandas.DataFrame.head
应该可以
b4wnujal2#
您也可以这样做作为一个方便:
df[:10]
56lgkhnf3#
有很多种方法可以做到这一点。下面我们将讨论至少三种选择。
为了保留原始 Dataframe
df
,我们将切片 Dataframe 分配给df_new
。最后,在章节时间比较中,我们将使用随机 Dataframe 显示不同的执行时间。
使用
head
对于n的负值,此函数返回除最后n行之外的所有行,等效于
df[:-n]
Source(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html)。使用
iloc
对于这种特定情况,我们使用
time.perf_counter()
来度量执行时间。由于有各种各样的变量可能影响执行时间,这可能会根据所使用的 Dataframe 等因素而改变。
10
之外,用户还可以用所需的行数来替换前面的操作。将返回包含前
5
行的 Dataframe 。但是,请注意,存在strong opinions on the usage of .apply(),对于本例,它远非必需的方法。
vyswwuz24#
df.ix[10,:]
为您提供了从第10行开始的所有列。在您的示例中,您需要直到第10行df.ix[:9,:]
为止的所有列。请注意,切片范围的右端包括第10行:http://pandas.sourceforge.net/gotchas.html#endpoints-are-inclusiverkue9o1l5#
DataFrame[:n]
将返回前n行。