如何在pandas DataFrame遍历行时跳过列标题(ID3开发场景)
解决方案
1. 正确读取CSV文件
首先不要使用header=None参数,pandas读取CSV默认header=0,会自动将文件第一行识别为列名,后续行识别为数据行,刚好符合你的需求:
import pandas as pd # 训练集、测试集读取逻辑一致 train_df = pd.read_csv("训练集路径.csv") test_df = pd.read_csv("测试集路径.csv")
2. 按列遍历(适配ID3属性概率计算场景)
你之前使用iteritems()(pandas 1.5+版本推荐用items(),向下兼容iteritems())遍历列时额外输出列名,是因为直接打印了完整的Series对象,Series默认会携带列名作为name属性输出。调整遍历逻辑,单独打印列名到Processing行,再逐个遍历列内元素即可:
# 遍历每个属性列 for col_name, col_series in train_df.items(): # 仅在Processing行展示列名 print(f"Processing 列名:{col_name}") # 遍历当前列的所有行数据 for row_idx, value in col_series.items(): # 仅输出行索引、对应值、dtype信息 print(f"行索引:{row_idx} | 对应值:{value} | dtype:{col_series.dtype}")
3. 按行遍历(按需选择)
如果你的逻辑需要按行遍历,使用iterrows()方法即可,遍历范围仅包含数据行,不会将表头作为第一行数据输出:
for row_idx, row_data in train_df.iterrows(): print(f"当前行索引:{row_idx}") # 输出当前行所有属性值 print(row_data.values)
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

