如何使用列表中的元素为pandas DataFrame设置对应列名
正确实现代码
import pandas as pd # 原始数据、列名列表,禁止用list作为变量名,会覆盖Python内置类型 data = ['some_values_that_i_need_to_save'] col_names = ['some_values'] # 此处替换为你实际的2506个元素的列名列表 # 先构建存储列映射的字典,先写入前11个固定字段 col_map = { 'Name': data[0::2506], 'Seller': data[1::2506], 'SellerId': data[2::2506], 'warehouse': data[3::2506], 'categoryID': data[4::2506], 'description': data[5::2506], 'url': data[6::2506], 'price': data[7::2506], 'currency': data[8::2506], 'img': data[9::2506], 'barcode': data[10::2506] } # 循环追加剩余自定义列 for idx in range(11, len(col_names)): col_map[col_names[idx]] = data[idx::2506] # 生成DataFrame并导出 df = pd.DataFrame(col_map) df.to_csv('qwe.csv', index=False)
问题修正说明
- Python 字典字面量不支持直接内嵌带判断的循环生成键值对,需要先单独构建字典再传入
pd.DataFrame - 你之前的步长值错误:总列数为2506,所以每一行对应data中2506个连续元素,所有列的提取步长统一为2506即可
- 不能用
list作为自定义变量名,会覆盖Python内置的list类型导致后续逻辑报错 - 列表没有
to_csv方法,导出CSV需要调用生成的DataFrame对象的to_csv方法,加index=False可以避免导出多余的行索引列 - 如果运行时出现列长度不一致的报错,先校验
len(data) % 2506 == 0是否成立,确认原始data是2506列对应数据的平铺结构
内容的提问来源于stack exchange,提问作者Cristina
相关产品推荐
相关产品推荐

