如何将pd.Series中的字典转换为字符串?适配API响应转BigQuery
将包含字典的 pandas Series 转换为字符串类型的 Series
针对你需要把DataFrame中存储字典列表的column列转换为字符串类型(用于加载到BigQuery而非STRUCT类型)的需求,这里提供两种实用的解决方法:
方法一:直接使用 astype(str) 强制转换
这是最简单直接的方式,适合快速完成类型转换:
import pandas as pd dicts = {1: [{"id1":"result1", "name1":"result1"}], 2: [{"id2":"result2", "name2":"result2"}]} df = pd.DataFrame.from_dict(dicts, orient='index') df = df.rename(columns={0:'column'}) # 转换为字符串类型 df['column'] = df['column'].astype(str) # 验证结果 print(df['column'].dtype) print(df['column'])
转换后的每个元素会以Python的字符串表示形式存储(比如"[{'id1': 'result1', 'name1': 'result1'}]")。
方法二:使用 json.dumps 生成标准JSON字符串
如果需要生成符合JSON规范的字符串(双引号格式,更适配BigQuery的后续处理),可以结合apply和json.dumps:
import pandas as pd import json dicts = {1: [{"id1":"result1", "name1":"result1"}], 2: [{"id2":"result2", "name2":"result2"}]} df = pd.DataFrame.from_dict(dicts, orient='index') df = df.rename(columns={0:'column'}) # 序列化为标准JSON字符串 df['column'] = df['column'].apply(json.dumps) # 验证结果 print(df['column'].dtype) print(df['column'])
这种方式生成的字符串是标准JSON格式(比如"[{\"id1\": \"result1\", \"name1\": \"result1\"}]"),兼容性更强,适合需要后续解析字符串的场景。
两种方法的区别
astype(str):操作简便、运行速度快,但生成的是Python风格的字符串(单引号),适合对格式要求不高的场景。json.dumps:生成标准JSON格式字符串,兼容性更好,适合需要严格遵循JSON规范的场景。
内容的提问来源于stack exchange,提问作者Luiz
相关产品推荐
相关产品推荐

