如何用For Loop为DataFrame添加列?解决列表索引报错问题
解决按列生成假数据的TypeError问题
错误原因
你触发的TypeError: list indices must be integers or slices, not str,是因为当前fake_dataset是列表类型——列表只能用整数索引或切片访问元素,无法像字典/DataFrame那样用字符串(如"Name")指定列。
解决方案
要实现按列存储假数据,有两种常用方式:
方式1:用字典构建列结构
字典的键对应列名,值对应该列的所有数据列表,适合轻量数据场景:
from faker import Faker fake = Faker() # 初始化空字典,定义列名 fake_dataset = { "Name": [], "Company": [], "Date": [], "Email": [], "Job": [] } # 循环生成数据并追加到对应列 for _ in range(20): fake_dataset["Name"].append(fake.name()) fake_dataset["Company"].append(fake.company()) fake_dataset["Date"].append(fake.date_between(start_date="-10y", end_date="now")) fake_dataset["Email"].append(fake.email()) fake_dataset["Job"].append(fake.job()) # 验证结果(示例:打印每列前2条数据) for column_name, values in fake_dataset.items(): print(f"{column_name}: {values[:2]}")
方式2:用Pandas DataFrame(推荐用于数据处理场景)
如果后续需要对数据做分析、导出等操作,用Pandas的DataFrame更方便:
from faker import Faker import pandas as pd fake = Faker() # 先批量生成每行数据的字典列表 data_rows = [] for _ in range(20): data_rows.append({ "Name": fake.name(), "Company": fake.company(), "Date": fake.date_between(start_date="-10y", end_date="now"), "Email": fake.email(), "Job": fake.job() }) # 转换为DataFrame fake_dataset = pd.DataFrame(data_rows) # 查看前5行数据 print(fake_dataset.head())
补充说明
你最初的代码是把所有数据按顺序追加到列表里,生成的是一维扁平数据;而按列存储需要用二维结构(字典或DataFrame)来映射列名和对应数据集合。
内容的提问来源于stack exchange,提问作者Ali Semih Çamkerten
相关产品推荐
相关产品推荐

