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

如何移除Pandas生成字典中的列名,实现列表型字典输出?

解决方案:将分组后的嵌套字典转为列表型字典

嘿,这个需求其实很好实现,给你两种简洁的方案,看哪种更适合你的场景:

方法一:直接针对目标列分组(最高效)

既然你只需要每个page_id对应的access_time列表,完全可以直接对access_time列做分组操作,一步到位,比操作整个DataFrame更高效:

import pandas as pd

# 示例数据
data = {
    'page_id': ['01', '01', '02', '03'],
    'access_time': ['20171223', '20171224', '20171226', '20171227']
}
df = pd.DataFrame(data)

# 核心代码
result = df.groupby('page_id')['access_time'].apply(list).to_dict()
print(result)

运行后得到的结果就是你想要的:

{'01': ['20171223', '20171224'], '02': ['20171226'], '03': ['20171227']}

方法二:基于你原有代码修改

如果你不想改动太多原有逻辑,也可以在生成嵌套字典后,用字典推导式提取出access_time列表:

# 你的原有代码生成嵌套字典
nested_result = df.groupby('page_id').apply(lambda dfg: dfg.drop('page_id', axis=1).to_dict(orient='list')).to_dict()

# 转换为目标格式
final_result = {page_id: info['access_time'] for page_id, info in nested_result.items()}
print(final_result)

为什么原有代码会生成嵌套字典?

你原来的to_dict(orient='list')会把DataFrame的每一列转成列表并以列名为键,所以即使你drop了page_id,剩下的access_time列依然会作为外层字典值的键,导致出现嵌套结构。而方法一中直接对单列分组后转列表,就跳过了列名这一层,直接得到page_id对应时间列表的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:13:30