Python:df ['Col']。apply(lambda row:len(row))和df.apply(lambda row:len(row ['Col']),axis =有什么区别? 1)?

问题描述 投票:0回答:1
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 /应该在大型数据集上使用哪个?

python pandas apply
1个回答
0
投票

使用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:我尝试了第三种方法,以为在我意识到它不起作用之前它的速度更快。我已将其从答案中删除。

© www.soinside.com 2019 - 2024. All rights reserved.