如何从Pandas DataFrame每行生成带列名的命名数组?
将Pandas DataFrame每行转换为带列名的字典数组
首先得指出你代码里的小问题:iterrows()的返回顺序搞反啦!它的返回值是**(索引, 行数据)**,不是你写的(行数据, 索引),这就是你打印出Series对象的原因。
先明确你的需求:把这个DataFrame
index a b c 1 2 3 4 2 3 4 5
转换成[{"a":2,"b":3,"c":4},{"a":3,"b":4,"c":5}],这里有两种简单的解决办法:
方法1:修正你的for循环
调整循环变量的顺序,然后用row.to_dict()把每行的Series转成字典,再收集到列表里:
import pandas as pd # 先构造你的DataFrame df = pd.DataFrame({'a': [2, 3], 'b': [3, 4], 'c': [4, 5]}, index=[1, 2]) result = [] for index, row in df.iterrows(): result.append(row.to_dict()) print(result)
运行后就能得到你想要的输出。
方法2:更高效的内置方法
如果你的DataFrame数据量比较大,iterrows()的效率不算最优,推荐直接用Pandas的内置方法to_dict('records'),一行代码搞定:
result = df.to_dict('records') print(result)
这个方法会直接返回每行对应的字典组成的列表,完全匹配你的需求,而且性能比手动循环好很多。
内容的提问来源于stack exchange,提问作者Apricot
相关产品推荐
相关产品推荐

