如何用Pandas读取Excel单列数据到列表?遇问题求解决方案
看来你在把单列Excel转成Python列表时遇到了小麻烦,我来帮你梳理下问题根源,再给你几个简单的解决方案~
问题根源
你遇到的核心问题是:pandas默认会把Excel的第一行当成列标题(表头),而你的表格其实是纯数据、没有表头的,所以第一个邮箱被当成了列名,导致后续操作要么拿不到它,要么读取结果不符合预期。
解决方案
方案1:最直接的正确读取方式
告诉pandas你的表格没有表头,所有行都是数据,直接转成列表:
import pandas as pd # header=None 表示第一行是数据,不是表头 df = pd.read_excel('emails.xlsx', header=None) # 把单列数据转成列表 email_list = df[0].tolist() print(email_list)
这样就能一次性拿到所有邮箱,包括你之前缺失的第一个元素。
方案2:修复你第一次的尝试
如果你还是想用sheet_name=None的方式读取(比如要处理多个工作表),可以这样提取所有数据:
import pandas as pd # 读取所有工作表,返回有序字典 df_dict = pd.read_excel('emails.xlsx', sheet_name=None) # 获取第一个工作表的DataFrame(如果有多个表,可循环处理) df = next(iter(df_dict.values())) # 把列标题(也就是第一个邮箱)和数据行合并成列表 email_list = [df.columns[0]] + df[df.columns[0]].tolist() print(email_list)
方案3:修复你第二次的尝试
你之前用index_col=0时丢失了第一个元素,是因为pandas把第一行当成了索引的名称,调整参数就能解决:
import pandas as pd # 指定无表头,且不把第一列设为索引 df = pd.read_excel('emails.xlsx', header=None, index_col=None) email_list = df[0].tolist() print(email_list)
关于“逐行读取Excel”的疑问
当然有办法逐行读取!比如用pandas的iterrows()方法,虽然效率不如直接转列表,但确实是逐行处理的方式:
import pandas as pd df = pd.read_excel('emails.xlsx', header=None) email_list = [] for index, row in df.iterrows(): email_list.append(row[0]) print(email_list)
内容的提问来源于stack exchange,提问作者kshnkvn
相关产品推荐
相关产品推荐

