You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:10:30