Pandas读取Excel:修正表头并匹配列值提取行数据为列表
解决Excel读取与目标数据提取的问题
咱们一步步来修正你的代码,搞定这两个需求:
1. 正确读取Excel文件,设置第二行为表头
你需要忽略第一行旧表头,用第二行作为DataFrame的表头。这时候要给pd.read_excel加上header=1参数(因为pandas的行索引从0开始,第二行对应索引1),这样就能自动跳过第一行,把第二行设为新表头:
import pandas as pd # 读取文件,指定第二行为表头 df3 = pd.read_excel("abcd.xlsx", sheet_name="Values", header=1)
这时候df3的列名就变成了你需要的:X、VALUE、IP、Ethernet IP、VLAN,对应原来的column1、column11、column16、column17、column19列。
2. 匹配特定值并提取目标列表
你之前的代码得到列名列表,是因为直接对筛选后的DataFrame用list(),会默认返回列名而不是行数据。咱们换个方式:
- 先筛选
X列(也就是原来的column1列)等于"J"的行 - 去掉
X列,只保留需要的列 - 将行数据转换成列表
如果只有一行符合条件,用下面的代码:
# 筛选符合条件的行,去掉X列 filtered_data = df3[df3['X'] == "J"].drop(columns=['X']) # 将单行数据转为列表 target_list = filtered_data.iloc[0].tolist() print(target_list) # 输出示例:['2224', '42.82.207.241', '42.82.207.241', 'W']
如果有多行符合条件,可以生成一个包含多个列表的列表:
# 遍历所有符合条件的行,转成列表的列表 target_lists = [row.tolist() for _, row in df3[df3['X'] == "J"].drop(columns=['X']).iterrows()]
这样就能得到你想要的目标数据啦!
内容的提问来源于stack exchange,提问作者Akash Rathor




