如何将CSV文件的每一列存储为列表?寻求技术帮助
解决CSV列转列表的问题
嘿,我帮你搞定这个需求!把CSV文件的每一列单独存成列表其实很简单,不管用原生Python还是pandas都能轻松实现,我给你一步步讲清楚~
方法一:用原生Python的csv模块(无需额外依赖)
如果不想用第三方库,用Python自带的csv模块就能完成。核心思路是先读取所有行,再通过转置把行数据变成列数据:
import csv # 替换成你的CSV文件路径 with open('your_data.csv', 'r', newline='') as csv_file: csv_reader = csv.reader(csv_file) # 先读取表头(如果你的CSV有表头的话,没有可以跳过这行) headers = next(csv_reader) # 读取所有行的数据 all_rows = list(csv_reader) # 转置行和列:zip(*all_rows)会把每个位置的元素打包成列 column_tuples = list(zip(*all_rows)) # 把元组转成列表(如果需要的话,元组也能直接用) column_lists = [list(col) for col in column_tuples] # 输出看看效果 for header, col_list in zip(headers, column_lists): print(f"列「{header}」的列表:{col_list}")
方法二:用pandas(更简洁高效)
你之前尝试用pandas没成功,大概率是没找对正确的方法~pandas处理这类需求超级方便,直接取列转成列表就行:
import pandas as pd # 读取CSV文件,自动识别表头 df = pd.read_csv('your_data.csv') # 把每一列转成列表,存在字典里方便按列名访问 column_dict = {column_name: df[column_name].tolist() for column_name in df.columns} # 举个例子,访问名为「Age」的列列表 print(column_dict['Age']) # 或者遍历所有列 for col_name, col_data in column_dict.items(): print(f"列「{col_name}」:{col_data}")
小提示
如果之前用pandas得到的是行列表,可能是你用了df.values.tolist()——这个是把整个DataFrame转成每行的列表,而我们需要的是单独的列,直接通过df[列名]拿到列数据,再调用tolist()就搞定啦!
内容的提问来源于stack exchange,提问作者Jakub Pluta
相关产品推荐
相关产品推荐

