使用Pandas合并数据集时出现NameError错误的求助
问题:Pandas合并数据集触发NameError错误
我用Pandas合并两个学生数据集时触发了NameError,提示名称'c'未定义,代码和报错信息如下:
原代码
import pandas as pd from sklearn.datasets import load_iris import matplotlib.pyplot as plt df= pd.read_csv("student/student-por.csv") ds= pd.read_csv("student/student-mat.csv") print("before merge") print(df) print(ds) print("After merging:") dq = pd.merge(df,ds,by=c("school","sex","age","address","famsize","Pstatus","Medu","Fedu","Mjob","Fjob","reason","nursery","internet")) print(dq)
报错信息
Traceback (most recent call last): File "/Users/PycharmProjects/datamining/main.py", line 15, in <module> dq = pd.merge(df, ds,by=c ("school","sex","age","address","famsize","Pstatus","Medu","Fedu","Mjob","Fjob","reason","nursery","internet")) NameError: name 'c' is not defined
解决方法
错误根源是误用了R语言的语法:c(...)是R里创建向量的方式,但Python中没有这个内置函数。Pandas的pd.merge的by参数需要传入Python的列表(用方括号[]包裹)或者元组。
修正后的核心代码行:
dq = pd.merge(df, ds, by=["school","sex","age","address","famsize","Pstatus","Medu","Fedu","Mjob","Fjob","reason","nursery","internet"])
完整修正代码
import pandas as pd from sklearn.datasets import load_iris import matplotlib.pyplot as plt df= pd.read_csv("student/student-por.csv") ds= pd.read_csv("student/student-mat.csv") print("before merge") print(df) print(ds) print("After merging:") # 替换c(...)为Python列表格式 dq = pd.merge(df, ds, by=["school","sex","age","address","famsize","Pstatus","Medu","Fedu","Mjob","Fjob","reason","nursery","internet"]) print(dq)
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

