求助:如何将特定列表转换为指定格式的Pandas DataFrame
解决方法:转换数据结构后生成DataFrame
这个问题我之前也碰到过!默认的pd.DataFrame()会把列表里的每个字典当成一行数据,字典的键自动作为列名——这就是为什么你会看到NaN填充的原因,因为每个字典只包含一个键,其他列自然没有值。
要得到你期望的格式,咱们需要先把数据结构转换成「键值对组成的列表」,再生成DataFrame:
步骤1:转换原始列表结构
用列表推导式把每个字典的键值对提取出来,变成二元组的列表:
import pandas as pd l = [{'County': 'SentenceCase'}, {'Postcode': 'UpperCase'}] # 提取每个字典的键值对,转换成[(键, 值)]的结构 processed_data = [(key, value) for d in l for key, value in d.items()]
步骤2:生成目标DataFrame
直接用处理后的列表创建DataFrame,并指定列名:
df = pd.DataFrame(processed_data, columns=['Header1', 'Header2']) print(df)
执行后得到的结果就是你想要的:
Header1 Header2 0 County SentenceCase 1 Postcode UpperCase
为什么header=None没用?
header=None参数是针对从文件读取数据时使用的(比如pd.read_csv),用来告诉pandas不要把第一行当成表头。但你是直接从列表生成DataFrame,这个参数完全不适用,所以调整数据结构才是正确的方向。
内容的提问来源于stack exchange,提问作者matt.whitby
相关产品推荐
相关产品推荐

