python - 如何从 Excel 电子表格中仅读取满足特定条件的行到 Python 中?

标签 python excel pandas

我需要通过读取包含近 50,000 行和 81 列的 Excel 电子表格来在 Python 中创建 pandas 数据框。该文件包含有关各种医疗专业人员的信息:医生、护士、执业护士等。我只想读取“PROFTYPE”列值为“NURSEPRACT”的行。

我使用的是Python 3.73,并且我已经读入了整个文件,然后我通过 PROFTYPE 列对其进行了修剪;但阅读时间太长。我只想读取 PROFTYPE == 'NURSEPRACT' 的行。

df_np = pd.read_excel(SourceFile, sheetname='Data', header=0)
df_np = df_np[df_np['PROFTYPE'] == 'NURSEPRACT']

这段代码实际上有效,但那是因为我首先读取整个文件。实际上,我只想阅读那些满足 PROFTYPE = 'NURSEPRACT' 条件的内容。

最佳答案

一个想法是你可以

  1. 仅加载“PROFTYPE”列,
  2. 确定非护士执业者行,
  3. 加载整个表以仅保留执业护士行。

该策略正在发挥作用:

df = pd.read_excel(SourceFile,
                   sheet_name='Data',
                   header=0,
                   usecols=['PROFTYPE']) # <-- Load just 'PROFTYPE' of the following table
# ID    PROFTYPE    YEARS_IN_PRACTICE  
# 1234  NURSEPRACT  12
# 43    NURSE   32
# 789   NURSEPRACT  4
# 34    PHYSICIAN   2
# 93    NURSEPRACT  13
row_numbers = [x+1 for x in df[df['PROFTYPE'] != 'NURSEPRACT'].index]
df = pd.read_excel(SourceFile, sheet_name='Data', header=0, skiprows=row_numbers)
# ID    PROFTYPE    YEARS_IN_PRACTICE
# 1234  NURSEPRACT  12
# 789   NURSEPRACT  4
# 93    NURSEPRACT  13

关于python - 如何从 Excel 电子表格中仅读取满足特定条件的行到 Python 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576677/

相关文章:

python - 快速检查列表是否是嵌套列表元素之一的子列表

sql - 在给定特定条件 SQL 的情况下,仅对不同的值求和

python - Airflow 与 BgQuery Error 集成

python - 将多个列中的匹配对分组在一起 Python

python - 将列名称从字符串更改为 float

python,通过坐标从DAS获取序列

python - 整数超出范围 - Django

python - Pandas - 将字符串类型转换为 float

java - ExcelReader workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK) 不起作用

vba - 将多张工作表保存为 PDF