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

Pandas DataFrame转指定嵌套字典:datetime格式异常及实现方案

Pandas DataFrame转指定嵌套字典的问题与解决

原始DataFrame结构

day        account_id     balance
  2022-11-01  ncw8y7     1.000000
  2022-11-02  ncw8y7     1.000424

预期嵌套字典结构

{"account_id":"ncw8y7","balances":{"2022-11-01":{"day":[2022,11,1],"balance":1.000000},"2022-11-02":{"day":[2022,11,2],"balance":1.000424}}}

尝试代码及问题

尝试了以下代码:

dict = results.groupby('account_id')[['day','balance']].apply(lambda x: x.set_index('day').to_dict(orient='index')).to_dict()

遇到的问题:

  • 日期键为datetime.date类型(如datetime.date(2022, 11, 1)),不是预期的字符串格式
  • 结构不符合要求:缺少二级键"balances",且day字段未拆分为[年,月,日]列表

问题原因

是的,设置day为索引时,如果原始day列是datetime/date类型,索引会保留该类型,不会自动转为字符串。同时原代码的分组逻辑直接生成了以account_id为键、日期索引字典为值的结构,没有添加"balances"二级键,也未处理day的拆分逻辑。

修改后的代码方案

方案一:分组自定义处理函数

import pandas as pd

# 确保day列是datetime类型(若原始数据不是则执行此步)
results['day'] = pd.to_datetime(results['day'])

# 定义分组处理函数
def process_account_group(group):
    balances = {}
    for _, row in group.iterrows():
        date_str = row['day'].strftime('%Y-%m-%d')
        day_list = [row['day'].year, row['day'].month, row['day'].day]
        balances[date_str] = {
            'day': day_list,
            'balance': row['balance']
        }
    return {'account_id': group['account_id'].iloc[0], 'balances': balances}

# 执行分组转换
final_dict = results.groupby('account_id').apply(process_account_group).iloc[0]

方案二:简洁字典推导式(单账号场景)

如果数据中只有单个account_id,可直接遍历行生成结构:

import pandas as pd

results['day'] = pd.to_datetime(results['day'])
final_dict = {
    'account_id': results['account_id'].iloc[0],
    'balances': {
        row['day'].strftime('%Y-%m-%d'): {
            'day': [row['day'].year, row['day'].month, row['day'].day],
            'balance': row['balance']
        } for _, row in results.iterrows()
    }
}

关键说明

  1. 先将day转为datetime类型,方便提取年/月/日以及格式化字符串
  2. 手动构建balances字典,确保日期键为YYYY-MM-DD格式的字符串
  3. 按要求拆分日期为[年,月,日]列表,同时保留原始balance值
  4. 包裹顶层的account_id和二级键balances,匹配预期结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:20:26