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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:14:27