如何获得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