You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中R转Python遇NameError:hosp_info未定义求助

问题排查:Python中'hosp_info'未定义错误

我是Python新手,在Jupyter Notebook中将R代码转换为Python代码时,持续触发报错,提示NameError: name 'hosp_info' is not defined。以下是相关代码及报错信息,恳请协助排查解决:

原始R代码

# Get the unique hospital names
hosp_names = hosp_info %>% 
  filter(`Hospital Type` == "Acute Care Hospitals") %>%
  filter(State == "CA") %>%
  pull(`Hospital Name`)

# Filter based on those hospital names
hosp_info_CA = 
hosp_info %>% 
  rename(Hospital = `Hospital Name`,
         Provider_ID = `Provider ID`,
         Safety = `Safety of care national comparison`,
         Effectiveness = `Effectiveness of care national comparison`
         ) %>%
  filter(Hospital %in% hosp_names, State == "CA") %>%
  mutate(Overall_Rating = as.numeric(`Hospital overall rating`)) %>%
  drop_na(Overall_Rating)

hosp_info_CA %>% 
  arrange(desc(Overall_Rating), Hospital) %>% 
  head(7)

hosp_info_CA %>% 
  group_by(Overall_Rating, Safety) %>% 
  count()

write_csv(hosp_info_CA, 'hosp_info_CA.csv')

我编写的Python代码

import pandas as pd #import panda

hosp_names = hosp_info
hosp_info = [(hosp_info[" Hospital Type "] == " Acute Care Hospitals ") & (hosp_info[" State "] == " CA ")].loc[:,[" Hospital Name "]].unique()

hosp_info_CA = hosp_info.rename(columns={" Hospital Name ": " Hospital ", " Provider ID ": " Provider_ID ", " Safety of care national comparison ": " Safety ", " Effectiveness of care national comparison ": " Effectiveness "}).loc[hosp_info[" Hospital "].isin(hosp_names) & (hosp_info[" State "] == " CA ")].dropna(subset=[" Hospital overall rating "]).assign(Overall_Rating = lambda x: pd.to_numeric(x[" Hospital overall rating "]))

hosp_info_CA.sort_values(by=" Overall_Rating ", ascending=False).head(7)

hosp_info_CA.groupby([" Overall_Rating ", " Safety "]).count()

hosp_info_CA.to_csv(" hosp_info_CA.csv ")

报错信息

NameError                                 Traceback (most recent call last)
 in 
3
4 # Get the unique hospital names
----> 5 hosp_names = hosp_info
6 hosp_info = [(hosp_info[" Hospital Type "] == " Acute Care Hospitals ") & (hosp_info[" State "] == " CA ")].loc[:,[" Hospital Name "]].unique()
7

NameError: name 'hosp_info' is not defined

问题根源及修正方案

1. 核心错误:未加载原始数据

R代码默认hosp_info已经是读入内存的数据框,但Python里你完全没写读取数据的代码。必须先把你的医院数据文件(比如CSV/Excel)读入成DataFrame,比如:

# 替换成你的实际文件路径
hosp_info = pd.read_csv("your_hospital_data.csv")

2. 代码逻辑错误修正

  • 删掉第一行无意义的hosp_names = hosp_info,这行不仅没用,还直接触发未定义错误。
  • 筛选hosp_names的写法错误:不能把条件放在列表里,要直接对DataFrame做筛选后提取列。
  • 列名空格问题:如果原始数据列名确实带前后空格,建议先清理列名,避免后续出错;如果是你手动加的空格,要去掉。
  • 拆分链式调用,避免一行代码太复杂,方便调试。

修正后的完整Python代码

import pandas as pd

# 第一步:读取原始数据(替换为你的实际文件路径)
hosp_info = pd.read_csv("your_hospital_data.csv")

# 清理列名(可选,但推荐:去掉列名前后空格)
hosp_info.columns = hosp_info.columns.str.strip()

# 获取加州急性护理医院的唯一名称
hosp_names = hosp_info[(hosp_info["Hospital Type"] == "Acute Care Hospitals") & (hosp_info["State"] == "CA")]["Hospital Name"].unique()

# 处理得到hosp_info_CA
hosp_info_CA = (hosp_info
                .rename(columns={
                    "Hospital Name": "Hospital",
                    "Provider ID": "Provider_ID",
                    "Safety of care national comparison": "Safety",
                    "Effectiveness of care national comparison": "Effectiveness"
                })
                .loc[(hosp_info["Hospital Name"].isin(hosp_names)) & (hosp_info["State"] == "CA")]
                .assign(Overall_Rating=lambda x: pd.to_numeric(x["Hospital overall rating"], errors="coerce"))
                .dropna(subset=["Overall_Rating"])
               )

# 查看Top7高评分医院
print(hosp_info_CA.sort_values(by="Overall_Rating", ascending=False).head(7))

# 按评分和安全等级分组计数
print(hosp_info_CA.groupby(["Overall_Rating", "Safety"]).size())

# 保存结果
hosp_info_CA.to_csv("hosp_info_CA.csv", index=False)

内容的提问来源于stack exchange,提问作者ex_lvl_99_warlock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:50:27