如何获得pandas数据框的行数?

我试图得到与Pandas的dataframeDF的行数,这里是我的代码。

方法1:

total_rows = df.count print total_rows +1 

方法2:

 total_rows = df['First_columnn_label'].count print total_rows +1 

这两个代码片段给我这个错误:

TypeError:不支持的操作数types为+:'instancemethod'和'int'

我究竟做错了什么?

根据@root给出的答案 ,检查df长度的最佳(最快)方法是调用:

 len(df.index) 

您可以使用.shape属性或者len(DataFrame.index) 。 但是,有明显的性能差异( .shape属性更快):

 In [1]: import numpy as np In [2]: import pandas as pd In [3]: df = pd.DataFrame(np.arange(9).reshape(3,3)) In [4]: df Out[4]: 0 1 2 0 0 1 2 1 3 4 5 2 6 7 8 In [5]: df.shape Out[5]: (3, 3) In [6]: timeit df.shape 1000000 loops, best of 3: 1.17 us per loop In [7]: timeit df[0].count() 10000 loops, best of 3: 56 us per loop In [8]: len(df.index) Out[8]: 3 In [9]: timeit len(df.index) 1000000 loops, best of 3: 381 ns per loop 

编辑:由于@Dan Allen在注释中指出len(df.index)df[0].count()是不可互换的,因为count不包括NaN

使用len(df) 。 这是pandas0.11或更早的作品。

__len__()目前(0.12)logging了Returns length of index 。 时间信息,在根的答案中设置相同的方式:

 In [7]: timeit len(df.index) 1000000 loops, best of 3: 248 ns per loop In [8]: timeit len(df) 1000000 loops, best of 3: 573 ns per loop 

由于一个附加的函数调用,它比直接调用len(df.index)要慢一些,但是在大多数情况下这不应该起作用。

假设df是你的数据框,那么:

 Count_Row=df.shape[0] #gives number of row count Count_Col=df.shape[1] #gives number of col count 

除了上面的答案,使用可以使用df.axes获取行列索引的元组,然后使用len()函数:

 total_rows=len(df.axes[0]) total_cols=len(df.axes[1]) 

获取行使用

 df.index 

和列使用

 df.columns 

你总是可以使用len(func)来获取列表的数量,因此你可以使用len(df.index)获取行数。

但请记住,如@root所述,使用shape[0] and shape[1]获取行数和列数是更快的select。

我从R背景来到pandas,看到大pandas在select行或列方面比较复杂。 我不得不与它搏斗一段时间,然后我find了一些方法来处理:

获取列数:

 len(df.columns) ## Here: #df is your data.frame #df.columns return a string, it contains column's titles of the df. #Then, "len()" gets the length of it. 

获取行数:

 len(df.index) #It's similar. 

df.shape以一个元组(行数,列数)的forms返回数据框的形状。

你可以简单地访问没有。 行或不行。 df.shape[0]分别与df.shape[0]df.shape[1]相同,与访问元组的值相同。

你可以试试:

 total_rows = len(df) 

对于数据框df,在浏览数据时使用打印的逗号格式的行数:

 def nrow(df): print("{:,}".format(df.shape[0])) 

例:

 nrow(my_df) 12,456,789