在Pandas数据框列中找到最长字符串的长度
有没有比下面的示例更快的方法来找到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
。
-
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
语法所来自的地方),我绝对建议您尝试一下,以快速测试此类内容。更新 添加了屏幕截图: