更快的Pandas替代方案,文本数据

时间:2016-06-10 00:22:02

标签: python string pandas

我有一个Pandas数据框,两列“text”和“status”:

text,status
Great!!, pos
I dunno., neut
Bad.,neg

大约有6000行。

文本字段由短句组成。我做了一个

dataset["text"] = dataset["text"].apply(strip_punctuation)

其中strip_punctuation进行一些字符串操作并返回一个字符串。函数快速地对字符串起作用,但是当我把它放在应用结果中是一个灾难,我不知道为什么。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

dataframe.apply本质上是对整个数据帧进行顺序扫描,并将您的函数应用于每一行。如果您的数据帧很大,那就太慢了。

使用如下的矢量化方法可以提高性能。但是你会得到更复杂/更少功能的权衡。

#include <vector>
#include <iostream>

template <typename T,
    template <typename E, typename Allocator = std::allocator<E>> class Container
>
void is_cont(typename Container<T>::iterator it)
{
    std::cout << "is iterator\n";
}

template <typename T,
    template <typename E, typename Allocator = std::allocator<E>> class Container
>
void is_cont(Container<T>& cont)
{
    std::cout << "is container\n";
}

int main()
{
    std::vector<int> vec{ 2, 4, 6 };
    is_cont(vec);               // Output: "is container"
    //is_cont(vec.begin());     // COMPILER ERROR
}