在Pandas数据框列中找到最长字符串的长度

发布于 2021-01-29 15:08:27

有没有比下面的示例更快的方法来找到Pandas DataFrame中最长字符串的长度?

import numpy as np
import pandas as pd

x = ['ab', 'bcd', 'dfe', 'efghik']
x = np.repeat(x, 1e7)
df = pd.DataFrame(x, columns=['col1'])

print df.col1.map(lambda x: len(x)).max()
# result --> 6

df.col1.map(lambda x: len(x)).max()使用IPython的进行计时大约需要10秒钟%timeit

关注者
0
被浏览
65
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    DSM的建议似乎是您无需进行一些手动微优化就能获得的最佳效果:

    %timeit -n 100 df.col1.str.len().max()
    100 loops, best of 3: 11.7 ms per loop
    
    %timeit -n 100 df.col1.map(lambda x: len(x)).max()
    100 loops, best of 3: 16.4 ms per loop
    
    %timeit -n 100 df.col1.map(len).max()
    100 loops, best of 3: 10.1 ms per loop
    

    请注意,显式使用该str.len()方法似乎并没有多大改进。如果您不熟悉IPython(这是非常方便的%timeit语法所来自的地方),我绝对建议您尝试一下,以快速测试此类内容。

    更新 添加了屏幕截图:

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看