You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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的列名就变成了你需要的:XVALUEIPEthernet IPVLAN,对应原来的column1column11column16column17column19列。

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

火山引擎 最新活动