You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame转字典失败求助:已参考指南仍无法实现转换

解决Pandas DataFrame转字典的问题

我看到你已经在筛选2015年非NA的供应商数据,并且想把结果转换成字典,但目前返回的还是DataFrame格式。问题的核心是你还没有调用Pandas内置的to_dict()方法来完成转换,下面是具体的解决方案:

关键知识点:Pandas的to_dict()方法

Pandas的DataFrame提供了to_dict()方法,可以灵活地将数据转换成不同结构的字典,常用的orient参数包括:

  • 'index':以行索引为键,每行数据作为值(字典格式),刚好匹配你当前输出的行号对应数据的需求
  • 'records':将每行转换成一个字典,所有行组成列表
  • 'dict':以列名为键,列值组成的字典为值

修改后的完整代码

结合你的需求(行号从1开始,返回字典格式),修改后的代码如下:

import pandas as pd
from collections import OrderedDict  # 如果需要严格有序的字典可以导入

# 读取并预处理数据
governmentcsv = pd.read_csv('government-procurement-via-gebiz.csv', parse_dates=True)
extract = governmentcsv.loc[:, ['supplier_name','award_date']]
extract.award_date = pd.to_datetime(extract.award_date)

def extract_supplier_not_na_2015():
    notNAFifteen = extract[(extract.supplier_name != 'na') & (extract.award_date.dt.year == 2015)]
    notNAFifteen.reset_index(drop=True, inplace=True)
    notNAFifteen.index += 1  # 索引从1开始
    
    # 可选:将日期转换为字符串格式(避免字典里出现Timestamp对象)
    notNAFifteen['award_date'] = notNAFifteen['award_date'].dt.strftime('%Y-%m-%d')
    
    # 转换为字典,orient='index'对应行号为键
    result_dict = notNAFifteen.to_dict(orient='index')
    
    # 如果需要OrderedDict(保持顺序),可以替换上面一行:
    # result_dict = OrderedDict(notNAFifteen.to_dict(orient='index'))
    
    return result_dict

# Python 3 请用括号包裹print内容
print(extract_supplier_not_na_2015())

输出示例

运行后你会得到类似这样的字典结构:

{
  1: {'supplier_name': 'RMA CONTRACTS PTE. LTD.', 'award_date': '2015-01-28'},
  2: {'supplier_name': 'TESCOM (SINGAPORE) SOFTWARE SYSTEMS TESTING PT...', 'award_date': '2015-07-01'},
  3: {'supplier_name': 'MKS GLOBAL PTE. LTD.', 'award_date': '2015-04-24'},
  ...
}

额外提示

  • 你之前注释的collections.orderedDictionary存在拼写错误,正确的是collections.OrderedDict,不过在Pandas 1.1.0及以上版本,DataFrame默认保持插入顺序,直接用to_dict()就能得到有序的字典,除非你需要明确的OrderedDict对象
  • 如果使用Python 3,print语句需要加上括号,这是语法要求

内容的提问来源于stack exchange,提问作者John Wick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:21:45