如何从包含多个字典的列表生成指定三列的pandas DataFrame
问题原因
- 拼写错误:pandas 数据帧构造类的正确拼写是
pd.DataFrame,你的代码中写的pd.Dataframe(首字母f小写)属于类名拼写错误,无法正确初始化数据帧对象。 append方法特性:pandas 的append方法不会原地修改原数据帧,而是会返回一个新的数据帧对象,你没有将返回结果赋值回原变量,所以原变量一直是空值。且目前pandas高版本已经正式弃用append方法,循环追加的写法本身效率极低,不推荐使用。
最优解决方案
直接把字典列表传入DataFrame构造器即可,不需要循环,代码如下:
import pandas as pd # 直接传入dictlist生成指定列的DataFrame output = pd.DataFrame(dictlist, columns=['subject', 'link', 'object'])
注:如果你的
dictlist里的字典存在额外键,columns参数会强制只保留你指定的subject、link、object三列,完全符合需求。
修正原循环写法(仅作参考,不推荐)
如果你坚持要修改原有循环写法,调整后的代码如下:
import pandas as pd output = pd.DataFrame() for j in dictlist: # 将append返回的新数据帧赋值回output output = output.append(j, ignore_index=True)
注:该写法在pandas 2.0+版本会抛出弃用警告,运行效率远低于直接传入字典列表的方案,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者Louay Gourrida
相关产品推荐
相关产品推荐

