熊猫:没有操作applymap所有列的操作?

时间:2019-06-01 16:04:58

标签: pandas

我试图找出是否有可能在不使用apply和不使用for循环的情况下实现以下目标。

df= [df[x].map(lambda x: len(x) > 5) for x in df.columns]

我专门在尝试避免套用和套用地图,而是寻找矢量化的解决方案。 DF中的所有值都是字符串。稍后,我将以上内容用作遮罩。

我找到的最快的是:

df1 = [df[x].map(lambda x: len(x) > 5) for x in df.columns]
df2 = df[pd.concat(df1, axis=1, keys=[s.name for s in df1]).any(1)]

速度比:

df[(df.applymap(len) > 5).any(axis=1)]

1 个答案:

答案 0 :(得分:4)

关于vectorize,至少应该比apply快一点,关于for循环的比较,这全都取决于您的数据大小和形状。 LinkLink

np.vectorize(len)(df.values)>5