如何用Pandas将CSV关键词数据转换为指定嵌套字典?
使用Pandas将CSV数据转换为指定嵌套字典格式
情况1:CSV为宽格式(日期作为列名)
如果你的CSV结构是keyword列 + 多个日期列(比如7/25/22、8/25/22作为列名,对应数值),直接用set_index和to_dict就能一步生成目标格式:
import pandas as pd # 读取CSV df = pd.read_csv('your_data.csv') # 转换为目标嵌套字典 data = df.set_index('keyword').T.to_dict('dict')
说明:
set_index('keyword'):把keyword列设为行索引,让每个唯一关键词成为一行的标识.T:转置数据,让日期变成行、关键词变成列to_dict('dict'):生成嵌套字典,外层键是关键词,内层键是日期,值是对应数值
情况2:CSV为长格式(每行是keyword+date+value)
如果你的CSV是长格式(列名比如keyword、date、value,每行对应一个关键词在某一天的数值),用groupby结合apply处理:
import pandas as pd # 读取CSV df = pd.read_csv('your_data.csv') # 按keyword分组,将每组的date和value转为字典 data = df.groupby('keyword').apply(lambda x: x.set_index('date')['value'].to_dict()).to_dict()
说明:
groupby('keyword'):自动按唯一关键词分组,无需手动处理重复值- 匿名函数
lambda x: x.set_index('date')['value'].to_dict():把每组的date设为索引,value作为值,转为字典 - 最后
to_dict():把分组结果转为外层以关键词为键的嵌套字典
为什么不用duplicated()?
Pandas的groupby会自动处理重复的keyword值,无需提前用duplicated()筛选,直接分组后就能聚合出每个关键词对应的所有日期-数值对,代码更简洁高效。
内容的提问来源于stack exchange,提问作者vkatsitadze
相关产品推荐
相关产品推荐

