在 pandas 数据框中搜索多个字符串
Posted
技术标签:
【中文标题】在 pandas 数据框中搜索多个字符串【英文标题】:Searching a pandas dataframe for multiple strings 【发布时间】:2022-01-03 01:43:44 【问题描述】:我有一个包含“名称”列的数据框 (df),并且我有一个单独的字符串列表,其格式为:
info = ['AAA.123+456.789', 'BBB.987+654.321', 'CCC.321-654.987']
等等。我想使用列表中的字符串搜索 df 中的“名称”列,并将结果存储在单独的数据框 (df2) 中。我用过:
df2 = df.loc[df['Names'].str.contains('|'.join(info))]
然而 df2 的输出(在 spyder 变量资源管理器中)要么是一个空数据框,要么只返回一个结果。我不确定如何解决这个问题,所以任何建议都将不胜感激 - 谢谢!
编辑
Index | Names | Quantity 1 | Quantity 2 | Quantity 3 | Quantity 4 |
---|---|---|---|---|---|
0 | AAA | 12.3 | 4.56 | 7.89 | 10.1112 |
1 | BBB | 3.21 | 65.4 | 98.7 | 1.21110 |
2 | CCC | 456.23 | 1.23 | 10101 | 101.112 |
3 | DDD | 6.4 | 3.21 | 0.2029 | 1211.10 |
是 df 内容的示例(它是 6 列和非常多的行数)
编辑 2
根据 Serge 在 cmets 的建议,将“列表”重新标记为“信息”
【问题讨论】:
请展示您的数据框内容示例。 不要逐个调用你的列表。保留用于定义列表。 另外,尝试提供一个最小可重现的例子。尝试创建一些产生相同问题的虚拟数据。例如,使用不太复杂的字符串模式以开头 【参考方案1】:你可以这样做。如果你的 df 是
df = pd.DataFrame("Names":['AAA.123+456.789', "BBB.987+654.321", "W1234", "A_aa_1+.", "Z54"], "col1":[1,2,3,4,5])
info = ['AAA.123+456.789', 'BBB.987+654.321', 'CCC.321-654.987']
和
df2 = df[df['Name'].isin(info)]
给予:
Names col1
0 AAA.123+456.789 1
1 BBB.987+654.321 2
【讨论】:
嗯好吧,奇怪的是当我使用上述方法时,我仍然得到一个 6 列的空 DataFrame 作为 df2 的结果?我几乎可以肯定 'info' 中的字符串在 df 中,因为我已将 df 中的相应条目复制到 info... 好的,现在可以正常使用了,非常感谢!以上是关于在 pandas 数据框中搜索多个字符串的主要内容,如果未能解决你的问题,请参考以下文章