df = pd.DataFrame([['user1', 'Hey whats up I am Rob', 73],
['user2', 'Hey whats up I am Bob', 44],
['user3', 'Hey whats up I am a Snob', 12]],
columns=['User', 'Text', 'Age'])
#Method 1
df['TextLen'] = df['Text'].apply(lambda row: len(row))
#Method 2
df['TextLen2'] = df.apply(lambda row: len(row['Text']), axis=1)
print(df)
结果:
User Text Age TextLen TextLen2
0 user1 Hey whats up I am Rob 73 21 21
1 user2 Hey whats up I am Bob 44 21 21
2 user3 Hey whats up I am a Snob 12 24 24
方法1和方法2有什么区别?
哪个是Pythonic /应该在大型数据集上使用哪个?
使用jupyter笔记本中的%% timeit魔术,我为您的两种方法分别计时。 方法1比方法2快得多。
方法1(更快)
%%timeit
df['TextLen'] = df['Text'].apply(lambda row: len(row))
#434 µs ± 6.73 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
方法2(减慢)
%%timeit
df['TextLen2'] = df.apply(lambda row: len(row['Text']), axis=1)
#1.24 ms ± 19.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
我在运行这些测试时使用了示例示例数据。
编辑1:我尝试了第三种方法,以为在我意识到它不起作用之前它的速度更快。我已将其从答案中删除。