如何获取Pandas DataFrame的行数
如何获取Pandas DataFrame的行数
在数据分析工作中,经常需要获取 Pandas DataFrame 的行数。以下将介绍多种获取行数的方法及相关情况。
实现步骤
1. 使用 len(df.index)
1 |
|
这种方法直接获取索引的长度,通常在性能上表现较好,尤其在最终优化的代码中是最快的运行时选择。
2. 使用 df.shape[0]
1 |
|
df.shape
返回一个元组,包含 DataFrame 的行数和列数,通过索引 0
可以获取行数。在交互式工作中,添加 .shape[0]
来查看过滤后剩余的行数比较方便。
3. 使用 len(df)
1 |
|
len(df)
也是常用的方法,可读性较高。在代码编写过程中,如果已经有一个子集化的 DataFrame,使用该方法可以更快速地获取行数。不过,由于存在一个额外的函数调用,它比 len(df.index)
稍慢,但在大多数情况下差异不大。
4. 使用 df[df.columns[0]].count()
1 |
|
此方法返回第一列中非 NaN
值的数量。但它的运行速度较慢,且输入代码较长,一般不建议用于单纯获取行数。
5. 其他特殊情况的方法
- 使用
df.axes
:
1 |
|
不过,这种方法会返回索引对象,可能会产生不必要的副本,除非有其他使用索引对象的需求,否则不建议使用。
- 使用
df.pipe(len)
:
1 |
|
该方法适用于在链式操作中获取行数,避免将长语句放在 len()
函数中。
最佳实践
- 在代码编写阶段,为了方便调试和交互式查看结果,可以使用
len(df)
或df.shape[0]
。 - 在最终优化的代码中,为了追求最快的运行速度,建议使用
len(df.index)
。
常见问题
1. df.count()
与获取行数的区别
df.count()
会返回每列中非 NaN
值的数量,而不是整个 DataFrame 的行数。例如:
1 |
|
输出结果是每列的非 NaN
值数量。
2. 遇到 'int' object is not callable
错误
当使用 len(df)
或 len(df.index)
时,可能会遇到此错误。这通常是因为将 len
作为变量名使用了。解决方法是使用 df.shape[0]
来获取行数。例如:
1 |
|
3. 性能差异
不同方法在性能上可能存在差异,尤其是在处理大型 DataFrame 时。一般来说,len(df.index)
是最快的,df.shape[0]
次之,len(df)
稍慢,而 df[df.columns[0]].count()
最慢。可以使用 timeit
模块来测试不同方法的性能:
1 |
|
如何获取Pandas DataFrame的行数
https://119291.xyz/posts/2025-04-14.how-to-get-row-count-of-pandas-dataframe/