1. ホーム
  2. python

Pandas データフレームのカラムで最も長い文字列の長さを求める

2023-08-25 06:16:40

質問

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

を実行するのに10秒程度かかります。 df.col1.map(lambda x: len(x)).max() を実行するのに、IPython の %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 構文に由来する IPython に慣れていない場合は、このようなことをすばやくテストするために、ぜひ試してみることをお勧めします。

更新 スクリーンショットを追加しました。