Pandas读取CSV列报KeyError及指定行列取值循环实现需求
问题解决与实现方法
一、修复KeyError: 'Name'问题
你的CSV文件用空格作为分隔符,但pd.read_csv()默认以逗号,作为分隔符,导致Pandas无法正确识别列名,从而抛出KeyError。解决方法是指定分隔符参数:
import pandas as pd # 指定sep为正则表达式匹配任意数量的空格 CSV_file = pd.read_csv('data.csv', sep='\s+') # 现在可以正常获取Name列 name = CSV_file['Name']
验证列名是否正确读取的方法:
# 打印所有列名,确认是否包含'Name' print(CSV_file.columns.tolist())
二、实现循环提取指定列并进行条件判断
以判断Age列是否大于22为例,遍历指定列数据并输出符合条件的行:
方法1:遍历行迭代器
import pandas as pd CSV_file = pd.read_csv('data.csv', sep='\s+') # 遍历每一行,判断Age>22则打印整行数据 for index, row in CSV_file.iterrows(): if row['Age'] > 22: print(row) # 也可以只打印指定列,比如Name和Age # print(f"Name: {row['Name']}, Age: {row['Age']}")
方法2:Pandas矢量化筛选(更高效)
如果数据量较大,推荐用Pandas的矢量化操作代替循环,效率更高:
# 直接筛选Age>22的行 filtered_data = CSV_file[CSV_file['Age'] > 22] # 打印筛选结果 print(filtered_data) # 若要逐行打印,可结合iterrows() for index, row in filtered_data.iterrows(): print(f"符合条件的用户:{row['Name']},年龄:{row['Age']}")
三、获取CSV中指定行列的具体值
1. 通过列名和索引取值
# 获取第0行(第一行数据)的Name列值 first_name = CSV_file.loc[0, 'Name'] print(first_name) # 输出:Ben. # 获取第2行的location列值 second_location = CSV_file.loc[2, 'location'] print(second_location) # 输出:LA
2. 通过位置索引取值(iloc)
# 获取第1行(索引从0开始)第0列的值 row1_col0 = CSV_file.iloc[1, 0] print(row1_col0) # 输出:Jack # 获取第3行第2列的值 row3_col2 = CSV_file.iloc[3, 2] print(row3_col2) # 输出:Lisbon
3. 获取整行/整列数据
# 获取第4行所有数据 row4 = CSV_file.loc[4] print(row4) # 获取整列Age的数据 age_column = CSV_file['Age'] print(age_column)
内容的提问来源于stack exchange,提问作者dean009
相关产品推荐
相关产品推荐

