pandas向量化运算获取字符串长度

pandas vectorized operation to get the length of string

我有一个 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

我知道我可以遍历它并获取长度但是有什么方法可以向量化这个操作吗?我有几百万行。

使用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

我认为最简单的方法是使用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