我有一个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
我知道我可以遍历它并获得长度,但有没有办法对这个操作进行矢量化?我有几百万行。
答案 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