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

如何在DataFrame字典列中批量提取location字段值?

批量提取DataFrame字典列中location值的可行方法

问题原因

你之前的批量代码用了explode(),但user列存的是单个字典不是列表,explode()会把字典拆成键值对的行,后续操作自然失效。

方法1:直接用apply提取

这是最直接的方式,对每行的user字典直接取location:

df['location'] = df['user'].apply(lambda x: x.get('location') if isinstance(x, dict) else None)
  • 用x.get('location')代替x['location'],避免字典里没location键时报错
  • 加isinstance(x, dict)判断,防止遇到非字典格式的数据出异常

方法2:用str.get简化写法

Pandas的字符串方法支持直接提取字典的键,代码更简洁:

df['location'] = df['user'].str.get('location')
  • 自动处理非字典的情况,返回NaN
  • 写法更短,性能和apply差不多

方法3:转成DataFrame提取(适合多字段需求)

如果之后还要提取字典里的其他字段(比如username、followersCount),可以直接把整个user列转成DataFrame再合并:

user_df = df['user'].apply(pd.Series)
df = df.join(user_df[['location']])  # 只合并location列
  • 一次性提取所有字典字段,后续加其他字段很方便
  • 可读性强,适合复杂场景

测试示例

给你个测试代码验证效果:

import pandas as pd

# 构造测试数据
data = [
    {'user': {'username': 'vinceXy798', 'location': 'Czech Republic', 'followersCount': 3151}},
    {'user': {'username': 'test_user', 'location': 'London', 'followersCount': 120}},
    {'user': {'username': 'no_loc_user', 'followersCount': 50}}  # 没有location键的情况
]
df = pd.DataFrame(data)

# 用方法1提取
df['location'] = df['user'].apply(lambda x: x.get('location') if isinstance(x, dict) else None)
print(df[['user', 'location']])

输出结果:

user        location
0  {'username': 'vinceXy798', 'location': 'Czech ...  Czech Republic
1  {'username': 'test_user', 'location': 'London'...          London
2  {'username': 'no_loc_user', 'followersCount': 50}             NaN

内容的提问来源于stack exchange,提问作者sravanthi lakshmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:35:07