如何获取panda数据帧df的行数?


当前回答

如果要在链接操作的中间获取行数,可以使用:

df.pipe(len)

例子:

row_count = (
      pd.DataFrame(np.random.rand(3,4))
      .reset_index()
      .pipe(len)
)

如果您不想在len()函数中放一个长语句,这可能很有用。

您可以改用__len__(),但__len__)看起来有点奇怪。

其他回答

如果要在链接操作的中间获取行数,可以使用:

df.pipe(len)

例子:

row_count = (
      pd.DataFrame(np.random.rand(3,4))
      .reset_index()
      .pipe(len)
)

如果您不想在len()函数中放一个长语句,这可能很有用。

您可以改用__len__(),但__len__)看起来有点奇怪。

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

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

例子:

nrow(my_df)
12,456,789

您也可以这样做:

假设df是您的数据帧。然后df.shape为您提供数据帧的形状,即(行,列)

因此,分配以下命令以获得所需的

 row = df.shape[0], col = df.shape[1]

找出数据帧中行数的另一种方法是pandas.Index.size,我认为这是最可读的变体。

请注意,正如我对公认答案的评论,

疑似pandas.Index.size实际上比len(df.Index)更快,但在我的计算机上告诉的是相反的情况(每个循环大约慢150 ns)。

…建立在Jan Philip Gehrcke的答案之上。

len(df)或len(df.index)比df.shape[0]更快的原因是:

看看代码。df.shape是一个@属性,它运行两次调用len的DataFrame方法。

df.shape??
Type:        property
String form: <property object at 0x1127b33c0>
Source:
# df.shape.fget
@property
def shape(self):
    """
    Return a tuple representing the dimensionality of the DataFrame.
    """
    return len(self.index), len(self.columns)

在len(df)的罩下

df.__len__??
Signature: df.__len__()
Source:
    def __len__(self):
        """Returns length of info axis, but here we use the index """
        return len(self.index)
File:      ~/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py
Type:      instancemethod

len(df.index)将比len(df)稍快,因为它少了一个函数调用,但这总是比df.shape[0]快