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

如何在Python中将多列表与含键值的字典合并为单个DataFrame

解决LinkedIn抓取数据合并为DataFrame的问题

你遇到的TypeError是因为pd.concat仅支持合并Series或DataFrame对象,直接传入字典必然报错。结合你存在多组工作/教育经历的情况,分两种常用场景给出解决方案:

场景1:每行对应一个用户,多组经历以列表存储

适合保留用户整体信息的需求,每个用户的多条工作/教育经历以列表形式存入对应列:

import pandas as pd

# 替换为你的实际抓取数据
names = ["张三", "李四"]
locations = ["北京", "上海"]
# 每个元素对应一个用户的工作经历列表
exps = [
    [{"job": "软件工程师", "company": "科技公司A", "date": "2020-至今", "job_location": "北京", "description": "负责后端开发"},
     {"job": "实习工程师", "company": "创业公司B", "date": "2019-2020", "job_location": "北京", "description": "协助测试"}],
    [{"job": "UI设计师", "company": "设计公司C", "date": "2018-至今", "job_location": "上海", "description": "负责产品界面设计"}]
]
# 每个元素对应一个用户的教育经历列表
eds = [
    [{"college": "北京大学", "degree": "本科"}],
    [{"college": "复旦大学", "degree": "硕士"}, {"college": "上海交通大学", "degree": "博士"}]
]

# 构造DataFrame数据源
data = {
    "姓名": names,
    "所在地": locations,
    "工作经历": exps,
    "教育经历": eds
}

df = pd.DataFrame(data)
# 导出CSV
df.to_csv("linkedin_users.csv", index=False, encoding="utf-8-sig")

场景2:每行对应一条经历(工作/教育),重复用户基本信息

适合按经历维度分析的需求,每条经历单独成行,用户基础信息随经历重复:

import pandas as pd

# 替换为你的实际抓取数据
names = ["张三", "李四"]
locations = ["北京", "上海"]
exps = [
    [{"job": "软件工程师", "company": "科技公司A", "date": "2020-至今", "job_location": "北京", "description": "负责后端开发"},
     {"job": "实习工程师", "company": "创业公司B", "date": "2019-2020", "job_location": "北京", "description": "协助测试"}],
    [{"job": "UI设计师", "company": "设计公司C", "date": "2018-至今", "job_location": "上海", "description": "负责产品界面设计"}]
]
eds = [
    [{"college": "北京大学", "degree": "本科"}],
    [{"college": "复旦大学", "degree": "硕士"}, {"college": "上海交通大学", "degree": "博士"}]
]

# 整理工作经历记录
exp_records = []
for name, loc, exp_list in zip(names, locations, exps):
    for exp in exp_list:
        exp_records.append({
            "姓名": name,
            "所在地": loc,
            "职位": exp["job"],
            "公司": exp["company"],
            "任职时间": exp["date"],
            "工作地点": exp["job_location"],
            "工作描述": exp["description"],
            "院校": None,
            "学位": None
        })

# 整理教育经历记录
ed_records = []
for name, loc, ed_list in zip(names, locations, eds):
    for ed in ed_list:
        ed_records.append({
            "姓名": name,
            "所在地": loc,
            "职位": None,
            "公司": None,
            "任职时间": None,
            "工作地点": None,
            "工作描述": None,
            "院校": ed["college"],
            "学位": ed["degree"]
        })

# 合并所有记录生成DataFrame
all_records = exp_records + ed_records
df = pd.DataFrame(all_records)
# 导出CSV
df.to_csv("linkedin_experiences.csv", index=False, encoding="utf-8-sig")

针对你最初错误的快速修正

如果你的exp和ed是每个键对应所有用户的单条值列表(比如exp = {"job": ["软件工程师", "UI设计师"], ...}),可以直接转成DataFrame后合并:

# 假设profile_intro是包含name和location的DataFrame
exp_df = pd.DataFrame(exp)
ed_df = pd.DataFrame(ed)
df = pd.concat([profile_intro, exp_df, ed_df], axis=1)

注意:这种方法仅适用于每个用户只有一条工作/教育经历的场景,多组经历会因长度不匹配报错,优先选用前两种场景的方案。

内容的提问来源于stack exchange,提问作者Jesper Ezra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:54