多列熊猫矢量化字符串函数?

伟大的

有没有一种方法可以查询DataFrame中任何列中包含特定字符串的行?Series.str除了DataFrame之外,还有其他类似的东西吗?这是我到目前为止的内容:

In [2]: s = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est"

In [3]: df = pd.DataFrame(np.array(s.split(' ')).reshape((-1, 4)), columns=['one', 'two', 'three', 'four'])

In [4]: df
Out[4]: 
           one            two         three        four
0        Lorem          ipsum         dolor         sit
1        amet,    consectetur   adipisicing       elit,
2          sed             do       eiusmod      tempor
3   incididunt             ut        labore          et
4       dolore          magna       aliqua.          Ut
5         enim             ad         minim     veniam,
6         quis        nostrud  exercitation     ullamco
7      laboris           nisi            ut     aliquip
8           ex             ea       commodo  consequat.
9         Duis           aute         irure       dolor
10          in  reprehenderit            in   voluptate
11       velit           esse        cillum      dolore
12          eu         fugiat         nulla   pariatur.
13   Excepteur           sint      occaecat   cupidatat
14         non      proident,          sunt          in
15       culpa            qui       officia    deserunt
16      mollit           anim            id         est

[17 rows x 4 columns]

In [5]: mask = df['one'].str.contains('dolor') | df['two'].str.contains('dolor') | df['three'].str.contains('dolor') | df['four'].str.contains('dolor')

In [6]: df[mask]
Out[6]: 
       one    two    three    four
0    Lorem  ipsum    dolor     sit
4   dolore  magna  aliqua.      Ut
9     Duis   aute    irure   dolor
11   velit   esse   cillum  dolore

[4 rows x 4 columns]

理想情况下,我想用类似于以下内容替换最后两行:

df[df.ix[:, 'one':'four'].str.contains('dolor')]

这可能吗?

算了吧

熊猫没有DataFrame.str方法(至少现在还没有)。但是,您可以使用

import numpy as np
mask = np.logical_or.reduce(
    [df[col].str.contains('dolor') 
     for col in df.loc[:, 'one':'four'].columns])

这比编写少了一点,而且比

mask = df['one'].str.contains('dolor') | df['two'].str.contains('dolor') | df['three'].str.contains('dolor') | df['four'].str.contains('dolor')

In [29]: %timeit mask = np.logical_or.reduce([df[col].str.contains('dolor') for col in df.loc[:, 'one':'four'].columns]); df[mask]
1000 loops, best of 3: 761 µs per loop

In [30]: %timeit mask = df['one'].str.contains('dolor') | df['two'].str.contains('dolor') | df['three'].str.contains('dolor') | df['four'].str.contains('dolor'); df[mask]
1000 loops, best of 3: 1.13 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相似的字符串查找循环的矢量化

来自分类Dev

熊猫矢量化

来自分类Dev

熊猫列的矢量化“和”

来自分类Dev

矢量化熊猫DataFrame

来自分类Dev

用矢量化函数替换慢熊猫循环

来自分类Dev

如何对具有嵌套for循环的字符串提取脚本进行矢量化处理?

来自分类Dev

R在数据帧内矢量化的字符串中提取模式

来自分类Dev

用于字符串操作的矢量化 Matlab/Octave 代码

来自分类Dev

在矢量化函数中调用矢量化函数

来自分类Dev

在熊猫中按列内容标记日期(矢量化)

来自分类Dev

在熊猫中按列内容标记日期(矢量化)

来自分类Dev

矢量化:根据条件更改多列的值

来自分类Dev

SVM-在Python中将字符串传递给CountVectorizer会矢量化每个字符?

来自分类Dev

对熊猫DataFrame进行矢量化更新?

来自分类Dev

熊猫数据框矢量化采样

来自分类Dev

如何对熊猫行动进行矢量化

来自分类Dev

矢量化数据表(例如grepl或类似数据)以进行大数据字符串比较

来自分类Dev

具有count和tfidf矢量化器的管道会产生TypeError:预期的字符串或类似字节的对象

来自分类Dev

隐藏矢量化函数的输出

来自分类Dev

使用函数接收矢量化输出

来自分类Dev

日期范围函数的矢量化,用于转换熊猫数据框

来自分类Dev

熊猫:将timedelta列添加到datetime列(矢量化)

来自分类Dev

矢量化熊猫-使用另一列将列分配给数组值

来自分类Dev

使用`dplyr`生成多列变量,并以矢量化方式运行

来自分类Dev

使用R中的矢量化代码在多列之间比较和替换值

来自分类Dev

numpy矢量化

来自分类Dev

矢量化算法

来自分类Dev

矢量化列表

来自分类Dev

在data.tables中创建新列时如何使用矢量化的get()函数?

Related 相关文章

热门标签

归档