【问题标题】:how do i search an excel document for a specific word and also build a new column with results from the search如何在 excel 文档中搜索特定单词,并使用搜索结果构建一个新列
【发布时间】:2019-07-05 13:54:34
【问题描述】:

所以我是 python 新手,我尝试使用 python 在 Excel 工作表中搜索每一行中的“ICD”,并使用结果创建一个新列,如果一行包含“ICD”这个词,那么在如果没有出现新列,则会出现“yes”一词,然后会出现“no”一词。

到目前为止,我已经尝试了很多不同的方法,但我卡住了,因为我是新手。这是我到目前为止所拥有的。我花了一段时间才找到导入 excel 文档本身的方法,现在我必须找到一种方法来添加新列并搜索每一行并放置结果。我知道我需要一个循环,我知道我需要一个 if/else 语句,但我不知道将它们放在哪里或将它们放在哪里。我正在使用 python 3.7

import pandas as pd
import xlrd
df = pd.read_excel (r'C:\New folder\CrohnsD.xlsx')
print (df)
import xlsxwriter
ICD=[
    str = df
    str.find("ICD",[ 0,[ 1057]])\
    if row contains "ICD"


]`

【问题讨论】:

    标签: python excel pandas if-statement


    【解决方案1】:

    Pandas 具有原生 excel 读取支持,因此您不需要 xlrd 或 xlsxwriter,除非您有复杂的输出格式要求。如果您只是在阅读、添加列和写作,您可以使用 pandas 来完成所有这些工作。

    您可以使用 lambda 函数一次检查所有行。这可能看起来有点高级,但axis=1 上的.apply(lambda) 将执行您分配给数据帧每一行的任何逻辑。然后我们可以使用.str .contains() and .any() 来检查每个'a' 的礼物

    data = [['a','b','c'],['a','d','e'],['x','y','z']]
    df = pd.DataFrame(data)
    
    # Create a new column that contains True or False depending on if any of the values in that row contain the string 'a'
    df['has_letter_a'] = df.apply(lambda row: True if row.str.contains('a').any() else False, axis=1)
    

    输出

    >>> df
       0  1  2  has_letter_a
    0  a  b  c          True
    1  a  d  e          True
    2  x  y  z         False
    

    【讨论】:

    • 谢谢。我得到了更好的理解,但由于我的 excel 文件已经有了 df = 我将如何让它搜索 excel 文件的每一行
    【解决方案2】:

    您可以依赖基本的 pandas 字符串函数——不需要任何花哨的东西。查找一列文本是否包含特定的文本字符串?使用Series.str.contains:

    df = pd.DataFrame({'x':['abc','defgICD','hijicd','klm']})
    df['icd'] = df['x'].str.contains('icd', case=False)
    

    返回:

             x    icd
    0      abc  False
    1  defgICD   True
    2   hijicd   True
    3      klm  False
    

    有关您可以使用的选项的一些文档,请参阅str.contains 的帮助页面。具体来说,可以指定是根据大小写匹配(这种情况下匹配的模式需要准确)还是匹配icdICDiCd等。

    意见:随着您在编程甚至 Excel 方面获得更多经验,我建议您坚持使用布尔 True/False 值而不是编码“是”/“否”,因为它只是更多简单明了,更容易记住等。如果您需要向经理/客户/等展示某些内容,您可以在最后一步将 True/False 替换为其他内容。

    【讨论】:

    • 谢谢。我得到了更好的理解,但由于我的 excel 文件已经有了 df = 我如何让它搜索 excel 文件的每一行
    • @mixjr365cool 您已经使用df = pd.read_excel(r'...') 读取Excel 文件。然后应用您想要执行的任何命令,然后使用df.to_excel() 导出到新的 Excel 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多