在本文中,我们将带你了解在pandas中搜索多个字符串而无需预定义要使用的字符串数在这篇文章中,我们将为您详细介绍在pandas中搜索多个字符串而无需预定义要使用的字符串数的方方面面,并解答panda
在本文中,我们将带你了解在pandas中搜索多个字符串而无需预定义要使用的字符串数在这篇文章中,我们将为您详细介绍在pandas中搜索多个字符串而无需预定义要使用的字符串数的方方面面,并解答pandas 查找字符串常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的algorithm – 搜索多个字符串、bash – 如何在文件中搜索多个字符串、c# – 在LINQ表达式中的字符串数组中搜索字符串、c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)。
本文目录一览:- 在pandas中搜索多个字符串而无需预定义要使用的字符串数(pandas 查找字符串)
- algorithm – 搜索多个字符串
- bash – 如何在文件中搜索多个字符串
- c# – 在LINQ表达式中的字符串数组中搜索字符串
- c语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)
在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
- 将
*
在def search(df, *words)
允许search
接受的位置参数的数量不受限制。它将收集所有参数(在第一个参数之后)并将其放在名为的列表中words
。 - np.logical_and.reduce([X,Y,Z])等效于
X & Y & Z
。但是,它允许您处理任意长的列表。
algorithm – 搜索多个字符串
但是,多年以来,我一直想知道是否有一种方法(并且在某种程度上认为这是不可能的)来搜索多个文件的多个字符串
假设我有一百万个文件,我想回答诸如“查找具有字符串”香蕉“,”摩托艇“和”白狐“”的查询.什么是有效的算法?有吗?
当然,可以在线性时间内搜索要搜索的文件大小.但对于大量的大文件来说,这似乎是不可行的.
谷歌的存在似乎表明实际上有一个非常快的算法来做到这一点.也许甚至一个这样的问题,即每个查询只取决于查询大小,而不是文本大小的数据库(当然,这样的算法会涉及输入文件的一些预处理)
我认为必须有一个这样的算法(谷歌做它!)但我的搜索没有发现任何东西.
解决方法
这在很大程度上肯定是并行编程的任务:将文件分发到不同的计算单元,让它们进行搜索,然后收集结果.这实际上是谷歌所做的,例如他们通过结合千种商用硬件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 – 如何在文件中搜索多个字符串
解决方法
awk '/string1|string2|string3/' file
使用awk,您还可以根据需要轻松使用AND逻辑.
awk '/string1/ && /string2/ && /string3/' file
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?
解决方法
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语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)
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语言中显示字符串数组的长度(数组实现的字符串数组和指针实现的字符串数组)的相关知识,请在本站进行查询。
本文标签: