python - 如何在 Excel 文档中搜索特定单词并使用搜索结果构建新列

标签 python excel pandas if-statement

所以我是Python新手,我尝试使用Python在Excel工作表中搜索每行中的“ICD”,并使用结果创建一个新列,因此,如果一行包含单词“ICD”,那么在新列将出现"is"一词,如果没有,则会出现“否”一词。

到目前为止,我已经尝试了很多不同的方法,但我被困住了,因为我对此很陌生。这是我到目前为止所拥有的。我花了一段时间才找到一种方法来导入 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"


]`

最佳答案

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

您可以使用 lambda 函数一次检查所有行。这可能看起来有点高级,但是 axis=1 上的 .apply(lambda) 将执行您分配给数据帧每一行的任何逻辑。然后我们可以使用 .str .contains() 和 .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

关于python - 如何在 Excel 文档中搜索特定单词并使用搜索结果构建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904436/

相关文章:

python - 如何迭代工作簿中的工作表,openpyxl

vba - 在 UDF 中设置时,在需要 range.cell 的范围内选择一个单元格

python - 如何使用对齐的空格字符将 python pandas.DataFrame 写入文件?

python - 从 Pandas 的 DataFrame 中的查询中选择行

javascript - 如何将用 python 编写的函数编译为 JavaScript (emscripten)?

python - 在 Python 模块之间共享列表

python - PyGame 和 Unicode - 一个永无休止的故事

python - 结果总和 Python SQL 查询

excel - Internet Explorer 对象 Excel VBA 的自动化错误未指定错误

python - 将包含可变长度列表的数据框列转换为数据框中的多列