GVKun编程网logo

在pandas中搜索多个字符串而无需预定义要使用的字符串数(pandas 查找字符串)

20

在本文中,我们将带你了解在pandas中搜索多个字符串而无需预定义要使用的字符串数在这篇文章中,我们将为您详细介绍在pandas中搜索多个字符串而无需预定义要使用的字符串数的方方面面,并解答panda

在本文中,我们将带你了解在pandas中搜索多个字符串而无需预定义要使用的字符串数在这篇文章中,我们将为您详细介绍在pandas中搜索多个字符串而无需预定义要使用的字符串数的方方面面,并解答pandas 查找字符串常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的algorithm – 搜索多个字符串、bash – 如何在文件中搜索多个字符串、c# – 在LINQ表达式中的字符串数组中搜索字符串、c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)

本文目录一览:

在pandas中搜索多个字符串而无需预定义要使用的字符串数(pandas 查找字符串)

在pandas中搜索多个字符串而无需预定义要使用的字符串数(pandas 查找字符串)

我想知道下面是否有更通用的方法?我想知道是否有一种方法可以创建st函数,以便我可以搜索未预定义数量的字符串?

因此,例如,能够创建通用的st函数,然后键入st(’Governor’,’Virginia’,’Google)

这是我当前的功能,但是它预定义了您可以使用的两个词。(df是pandas DataFrame)

def search(word1, word2, word3 df):    """    allows you to search an intersection of three terms    """    return df[df.Name.str.contains(word1) & df.Name.str.contains(word2) & df.Name.str.contains(word3)]st(''Governor'', ''Virginia'', newauthdf)

答案1

小编典典

您可以使用np.logical_and.reduce

import pandas as pdimport numpy as npdef search(df, *words):  #1    """    Return a sub-DataFrame of those rows whose Name column match all the words.    """    return df[np.logical_and.reduce([df[''Name''].str.contains(word) for word in words])]   # 2df = pd.DataFrame({''Name'':[''Virginia Google Governor'',                           ''Governor Virginia'',                           ''Governor Virginia Google'']})print(search(df, ''Governor'', ''Virginia'', ''Google''))

版画

                       Name0  Virginia Google Governor2  Governor Virginia Google

  1. *def search(df, *words)允许search接受的位置参数的数量不受限制。它将收集所有参数(在第一个参数之后)并将其放在名为的列表中words
  2. np.logical_and.reduce([X,Y,Z])等效于X & Y & Z。但是,它允许您处理任意长的列表。

algorithm – 搜索多个字符串

algorithm – 搜索多个字符串

我知道在文件中查找一个字符串的有效方法(kmp),或文件中的各种字符串(trie)

但是,多年以来,我一直想知道是否有一种方法(并且在某种程度上认为这是不可能的)来搜索多个文件的多个字符串

假设我有一百万个文件,我想回答诸如“查找具有字符串”香蕉“,”摩托艇“和”白狐“”的查询.什么是有效的算法?有吗?

当然,可以在线性时间内搜索要搜索的文件大小.但对于大量的大文件来说,这似乎是不可行的.
谷歌的存在似乎表明实际上有一个非常快的算法来做到这一点.也许甚至一个这样的问题,即每个查询只取决于查询大小,而不是文本大小的数据库(当然,这样的算法会涉及输入文件的一些预处理)

我认为必须有一个这样的算法(谷歌做它!)但我的搜索没有发现任何东西.

解决方法

并行编程

这在很大程度上肯定是并行编程的任务:将文件分发到不同的计算单元,让它们进行搜索,然后收集结果.这实际上是谷歌所做的,例如他们通过结合千种商用硬件PC解决了一些翻译问题. (虽然他们可能正在使用其他硬件来获取真正的Google搜索结果.)您可以阅读热门文章on the internet.

“MapReduce”作为一个概念

谷歌发明了一个名为MapReduce,which they wrote down in a whitepaper的范例.这基本上归结为在第一步中将输入映射到输出(广泛分布).然后在第二步中将所有小结果减少为一个主要结果.

可以像这样实现搜索:

> map:将文档与关键字一起分发以进行搜索.如果在当前文件中找到搜索词,则从计算节点返回文件名.否则什么都不返回
> reduce:从所有节点收集列表中的所有文件名.

(这实际上与他们在论文中提出的“分布式grep”问题相同.)

找出给定文本中是否存在给定字符串的问题在名称“字符串匹配”下进行了很好的研究,例如参见the Rabin-Karp algorithm或Knuth-Morris-Karp algorithm(只是为了得到任何东西).所以地图的实现相当容易.

对于文件的分发,可以使用许多不同的技术.如果想要了解分布式文件系统的可能性,可以收集有关Google文件系统(GFS)的信息,e.g. in the corresponding whitepaper.

减少几乎什么都不做,所以这很容易.

成品.

这是MapReduce范例的最佳优势:一旦理解了map和reduce如何结合到一个结果,就可以很容易地实现这两个功能.如果之前实现了MapReduce框架,则不必担心计算的并行性 – 否则会导致严重的问题.

其他概念

这绝对不是唯一可能的概念.

>可以根据您使用的硬件而变化(像MapReduce这样的独立PC,或者它更像是一台拥有数十个cpu的超级计算机).
>可以根据您使用的分布式(或非分布式)文件系统而有所不同.
>可以改变编程语言,这也可以产生巨大的差异.

如果你对这个研究领域感兴趣,你会发现很多其他的可能性,我相信在不久的将来会出现更多,因为分布式系统的出现比以往任何时候都多,但我希望我能提供一些见解,可能,需要注意什么,甚至是如何立即实现这一目标的方向.

bash – 如何在文件中搜索多个字符串

bash – 如何在文件中搜索多个字符串

我想在文件中搜索string1或string2或string3等的出现,并且只打印那些行(到stdout或文件,一个).如何在bash中轻松完成此操作?

解决方法

你也可以使用awk

awk '/string1|string2|string3/' file

使用awk,您还可以根据需要轻松使用AND逻辑.

awk '/string1/ && /string2/ && /string3/' file

c# – 在LINQ表达式中的字符串数组中搜索字符串

c# – 在LINQ表达式中的字符串数组中搜索字符串

if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
    var initials = Queries["SurnameInitial"].Split(',').ToList();
        filter.And(s => initials.Contains(s.Surname.ToArray()[0].ToString()));
}

它抛出异常

LINQ to Entities does not recognize the method ‘System.String ToString()’ method,and this method cannot be translated into a store expression.

我怎样才能匹配char vs string?

解决方法

您可以使用以下s.Surname.First()代替:
if (!string.IsNullOrEmpty(Queries["SurnameInitial"]))
{
    var initials = Queries["SurnameInitial"].Split(',');
        filter.And(s => initials.Contains(s.Surname.First()));
}

这是因为Linq to Entities不知道如何处理char.ToString()

由于您正在处理List< string>您可以使用:

filter.And(s => initials.Any(x => x.Contains(s.Surname.First()));

c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)

c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)

c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)

1、

#include <stdio.h>

int main(void)
{
    char x[][128] = {"aaa","bb","cccccc","d","eee"};
    char *y[] = {"11111","22222222","3333"};
    
    printf("length of x:  %u\n", sizeof(x)/sizeof(x[0]));
    printf("length of y:  %u\n", sizeof(y)/sizeof(y[0]));
    return 0;
}

 

今天的关于在pandas中搜索多个字符串而无需预定义要使用的字符串数pandas 查找字符串的分享已经结束,谢谢您的关注,如果想了解更多关于algorithm – 搜索多个字符串、bash – 如何在文件中搜索多个字符串、c# – 在LINQ表达式中的字符串数组中搜索字符串、c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)的相关知识,请在本站进行查询。

本文标签: