pandas vectorized operation获取字符串的长度

时间:2016-06-07 19:32:04

标签: python pandas dataframe vectorization string-length

我有一个pandas数据帧。

df = pd.DataFrame(['Donald Dump','Make America Great Again!','Donald Shrimp'],
                   columns=['text'])

我喜欢的是Dataframe中的另一列,其中包含“text”列中字符串的长度。

对于上面的例子,它将是

                        text  text_length
0                Donald Dump           11
1  Make America Great Again!           25
2              Donald Shrimp           13

我知道我可以遍历它并获得长度,但有没有办法对这个操作进行矢量化?我有几百万行。

2 个答案:

答案 0 :(得分:3)

使用str.len

print (df.text.str.len())                   
0    11
1    25
2    13
Name: text, dtype: int64

样品:

import pandas as pd

df = pd.DataFrame(['Donald Dump','Make America Great Again!','Donald Shrimp'],
                   columns=['text'])
print (df)
                        text
0                Donald Dump
1  Make America Great Again!
2              Donald Shrimp

df['text_length'] = (df.text.str.len())                   
print (df)
                        text  text_length
0                Donald Dump           11
1  Make America Great Again!           25
2              Donald Shrimp           13

答案 1 :(得分:2)

我认为最简单的方法是使用DataFrame的apply方法。 使用此方法,您可以以任何方式操作数据。

您可以执行以下操作:

df['text_ength'] = df['text'].apply(len)

使用您想要的数据创建新列。


编辑在看到@jezrael的回答后,我很好奇并决定计时。 我用lorem ipsum句子(101000行)创建了一个完整的DataFrame,差别非常小。对我来说,我得到了:

In [59]: %timeit df['text_length'] = (df.text.str.len())
10 loops, best of 3: 20.6 ms per loop

In [60]: %timeit df['text_length'] = df['text'].apply(len)
100 loops, best of 3: 17.6 ms per loop