如何用Excel文件初始化Pandas DataFrame列?解决NoneType错误
问题解决:用Excel列名初始化DataFrame时的'NoneType'错误
用户有存储列名的Excel文件columnlist.xls(示例列:FirstName、LastName等),想要用这些列名初始化DataFrame以便后续追加数据,尝试循环读取Excel文件将列名存入列表再创建DataFrame时,出现错误:'NoneType' object has no attribute 'append'
错误代码
import pandas as pd df = pd.DataFrame() df_cols = list() # read the saved columns in .csv file dfRepeatingColumns = pd.read_excel('columnlist.xls', sheet_name ='Repeating') for index, row in dfNonRepeatingColumns.iterrows(): df_cols = df_cols.append(row['Columns'])
问题原因
- 变量名不一致:代码中读取Excel后赋值给
dfRepeatingColumns,但循环迭代时使用了未定义的dfNonRepeatingColumns,会引发未定义错误,叠加后续append问题导致最终报错 - 列表
append方法使用错误:list.append()是原地修改列表的方法,没有返回值,将其赋值给df_cols会让变量变成None,后续再次调用append时就会触发NoneType相关错误
修正后的代码
无需循环逐行读取,直接提取整列数据转为列表更高效,同时修正变量名问题:
import pandas as pd # 读取Excel中存储列名的工作表 df_repeating_columns = pd.read_excel('columnlist.xls', sheet_name='Repeating') # 将Columns列的值转为列表作为DataFrame的列名 df_cols = df_repeating_columns['Columns'].tolist() # 用指定列名初始化空DataFrame df = pd.DataFrame(columns=df_cols)
内容的提问来源于stack exchange,提问作者Sri Goverdhan Sam
相关产品推荐
相关产品推荐

