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


当前回答

使用len(df)或len(df.index)时,可能会遇到以下错误:

----> 4 df['id'] = np.arange(len(df.index)
TypeError: 'int' object is not callable

解决方案:

lengh = df.shape[0]

其他回答

…建立在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]快

我从R背景来到Pandas,我发现Pandas在选择行或列时更加复杂。

我不得不与它搏斗一段时间,然后我找到了一些应对方法:

获取列数:

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

获取行数:

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

对于数据帧df,可以使用以下任一项:

长度(df.索引)df.形状[0]df[df.columns[0]].count()(==第一列中非NaN值的数量)


再现绘图的代码:

import numpy as np
import pandas as pd
import perfplot

perfplot.save(
    "out.png",
    setup=lambda n: pd.DataFrame(np.arange(n * 3).reshape(n, 3)),
    n_range=[2**k for k in range(25)],
    kernels=[
        lambda df: len(df.index),
        lambda df: df.shape[0],
        lambda df: df[df.columns[0]].count(),
    ],
    labels=["len(df.index)", "df.shape[0]", "df[df.columns[0]].count()"],
    xlabel="Number of rows",
)

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

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

例子:

nrow(my_df)
12,456,789

假设df是您的数据帧,那么:

count_row = df.shape[0]  # Gives number of rows
count_col = df.shape[1]  # Gives number of columns

或者更简洁地说,

r, c = df.shape