如何从API返回数据生成DataFrame并展开嵌套的results字典字段
实现方案
你可以通过两步实现:先处理results列字典中的列表类型值,再将字典展开为独立的DataFrame列,具体代码如下:
方法1:先处理字典再生成DataFrame
import pandas as pd # 定义单条结果的处理逻辑 def process_result(d): res = {} for k, v in d.items(): if isinstance(v, list): # 空列表替换为null if not v: res[k] = None # 单元素列表直接取元素值 elif len(v) == 1: res[k] = v[0] # 多元素列表按需调整逻辑,默认保留原列表 else: res[k] = v else: res[k] = v return res # 处理results列并生成目标DataFrame processed_list = df["results"].apply(process_result).tolist() target_df = pd.DataFrame(processed_list)
方法2:先展开再批量处理列值
如果字典键较多,也可以先直接展开所有键为列,再统一处理列表值:
import pandas as pd # 先把results列的字典直接展开为临时DataFrame temp_df = pd.DataFrame(df["results"].tolist()) # 遍历所有列处理列表格式的值 for col in temp_df.columns: temp_df[col] = temp_df[col].map( lambda x: None if isinstance(x, list) and not x else x[0] if isinstance(x, list) and len(x) == 1 else x ) target_df = temp_df
内容的提问来源于stack exchange,提问作者valdereo
相关产品推荐
相关产品推荐

