如何从Pandas DataFrame中提取字典内的数值?
解决方案
当然可行,以下是几种简单的实现方式:
方法1:直接处理已生成的DataFrame
针对已经创建好的df,可以用apply方法提取字典里的ALU对应值,直接替换原列:
df[1] = df[1].apply(lambda x: x['ALU'])
要是怕遇到缺失ALU键的情况,还可以加个容错,避免报错:
df[1] = df[1].apply(lambda x: x.get('ALU', None))
方法2:创建DataFrame前预处理数据
更高效的方式是在生成DataFrame之前就把数据处理好,省得后续再改列:
# 替换原来的rates_dic和df创建代码 rates_dic = [(date, value['ALU']) for date, value in rates.items()] df = pd.DataFrame(rates_dic, columns=['日期', 'ALU价格']) # 还能顺便给列起个直观的名字
方法3:用json_normalize展开字典
如果之后字典结构可能变复杂(比如多几个键),可以用pd.json_normalize来展开:
import pandas as pd # 展开第1列的字典数据 df_alu = pd.json_normalize(df[1]) # 把展开后的数值替换原列 df[1] = df_alu['ALU']
处理完成后,你的DataFrame第1列就会直接显示对应数值,比如第0行就是12.079170589589772。
内容的提问来源于stack exchange,提问作者langermc
相关产品推荐
相关产品推荐

