我的问题类似于以下帖子/问题: documentation
但是,我想知道如何在具有多列的数据帧中找到最长的字符串。针对单个柱固定上述帖子的解决方案。如何评估数据框中的所有列并找到最长的列?请注意,最长的项目可能不是字符串。它可能是一个很长的小数。
答案 0 :(得分:0)
您可以通过在列中搜索最大值然后在结果中找到最大值来实现此目的:
np.random.seed(123)
df = pd.DataFrame({
'c1': ['abc','a','ghjhkkhgjgj'],
'c2': np.random.randint(1,1e9,3)
})
df
c1 c2
0 abc 843828735
1 a 914636142
2 ghjhkkhgjgj 155217279
max(df.astype('str').applymap(lambda x: len(x)).max())
11
如果你想要字符串本身:
mask = df.astype('str').applymap(lambda x: len(x)) >= max(df.astype('str').applymap(lambda x: len(x)).max())
df[mask]
c1 c2
0 NaN NaN
1 NaN NaN
2 ghjhkkhgjgj NaN
时间比较与EdChum的建议
%timeit max(df.astype('str').applymap(lambda x: len(x)).max())
100 loops, best of 3: 2.11 ms per loop
%timeit df.astype(str).apply(lambda x: x.str.len()).max().max()
100 loops, best of 3: 2.71 ms per loop
(请注意,这仍然是一个小df)