我在R中找到了一个类似的解决方案,它使用stringr库:在字符串中搜索一个值,如果该值存在,则将其单独打印到一个新列中
下面的代码似乎可以工作,但我还希望输出我正在寻找的三个值,而这个解决方案将只输出一个值:
#Inserting new column
df.insert(5, "New_Column", np.nan)
#Searching old column
df['New_Column'] = np.where(df['Column_with_text'].str.contains('value1|value2|value3', case=False, na=False), 'value', 'NaN')
----编辑----
import pandas as pd
import numpy as np
text = [('I want to buy some apples.', 0),
('Oranges are good for the health.', 0),
('John is eating some grapes.', 0),
('This line does not contain any fruit names.', 0),
('I bought 2 blueberries yesterday.', 0)]
labels = ['Text','Random Column']
df = pd.DataFrame.from_records(text, columns=labels)
df.insert(2, "MatchedValues", np.nan)
foods =['apples', 'oranges', 'grapes', 'blueberries']
pattern = '|'.join(foods)
df['MatchedValues'] = df['Text'].str.contains(pattern, case=False)
print(df)
结果
Text Random Column MatchedValues
0 I want to buy some apples. 0 True
1 Oranges are good for the health. 0 True
2 John is eating some grapes. 0 True
3 This line does not contain any fruit names. 0 False
4 I bought 2 blueberries yesterday. 0 True
通缉结果
Text Random Column MatchedValues
0 I want to buy some apples. 0 apples
1 Oranges are good for the health. 0 oranges
2 John is eating some grapes. 0 grapes
3 This line does not contain any fruit names. 0 NaN
4 I bought 2 blueberries yesterday. 0 blueberries
您需要设置regex标志(将搜索解释为正则表达式):
whatIwant = df['Column_with_text'].str.contains('value1|value2|value3',
case=False, regex=True)
df['New_Column'] = np.where(whatIwant, df['Column_with_text'])
----编辑----
根据更新后的问题声明,以下是更新后的答案:
df['MatchedValues'] = df['Text'].str.lower().str.extract( '('+pattern+')', expand=False)
问题内容: 我得到了一个带有2列值的.txt文件。它们是2D坐标,因此第一列代表x值,第二列代表z值。不幸的是,有些行具有相同的x值但具有不同的z值。我想计算z值的平均值,以便将单个z与单个x关联。我所拥有的一个样本是: 如您所见,x值435.212与4个不同的z值相关联。我想拥有的是: 其中108.8985是(108.894 + 108.897 + 108.9 + 108.903)/ 4的结果。
如果我有一个字符串“sssaaadddccc”,我如何只打印“sadc”。可以使用SubString吗?还是必须使用charAt()?
我正在循环遍历数据文件中的每一行(包含用空格分隔的“字段”的行),并希望将一个字段的子字符串与另一个静态值进行比较。如果比较为真,我想打印一个字符串“X”,否则为“Y”。只是想知道如何使用Python完成它。不胜感激。谢谢。 代码:- 输入:- 输出:- 备注:-我对这段代码非常感兴趣。 要将上述子字符串与http://www.google.com如果匹配,则打印正确,否则打印不正确。
背景我有一个小索引与一些字符串字段(例如名称,街道,城市,电子邮件)。 和类似于 Lorem ipsum dolor sit amet,consectetuer adipiscing Elit。埃尼·康茂多·利古拉·埃盖特·多洛。埃尼安·马萨。同时也是一个社会成员,即natoque penatibus et magnis dis matraft montes,nascetur loomus mus
寻求帮助,从一个数据帧中搜索多个特定单词,在另一个数据帧的列(正文)中搜索,然后将这些值提取到新的列中。 进一步解释: < li >首先,我有一个数据框架,其中包含14个国家的大量文本摘要。 < li >其次,我有第二个数据框架,其中包含所有行政级别(lvl_2)名称,如省、村等。 < li >我想从大型摘要中提取所有提及adm2省/村名称的内容,并为每个单词创建一个新列,旋转更长时间。 这里有一
我的问题 当我搜索时,它会按要求返回,但当我搜索时,它会返回,为什么会出现这种情况,以及如何修复它?