将Pandas DataFrame转换为指定格式字典并将列名重命名为1-100
解决方案:将Pandas DataFrame转换为指定格式字典并重命名列名
步骤1:重命名列名
假设你的DataFrame名为df,其中第0列是包含DC-Vienna这类标签的列,剩余100列需要重命名为1到100。执行以下代码:
# 保留第0列的原始列名,将其余100列重命名为1-100 df.columns = [df.columns[0]] + list(range(1, 101))
步骤2:转换为目标格式字典
推荐使用set_index+stack的方法,效率更高且代码简洁:
# 将第0列设置为索引 df.set_index(df.columns[0], inplace=True) # 堆叠列与索引,生成多级索引的Series,再直接转为字典 result_dict = df.stack().to_dict()
示例验证
如果你的原始DataFrame是这样的小样本:
| DC | Col1 | Col2 |
|---|---|---|
| DC-Vienna | 8831 | 10174 |
| DC-Valencia | 3012 | 2276 |
执行上述代码后,result_dict会输出:
{(1, 'DC-Vienna'): 8831, (2, 'DC-Vienna'): 10174, (1, 'DC-Valencia'): 3012, (2, 'DC-Valencia'): 2276}
补充说明
- 如果不想修改原DataFrame,可以添加
copy()避免原地修改:processed_df = df.copy() processed_df.columns = [processed_df.columns[0]] + list(range(1, 101)) processed_df.set_index(processed_df.columns[0], inplace=True) result_dict = processed_df.stack().to_dict() stack()方法会把列标签转为索引的第二层级,最终多级索引的元组就正好是你需要的键格式,to_dict()直接将多级索引映射为对应的值。
内容的提问来源于stack exchange,提问作者Hans.nl
相关产品推荐
相关产品推荐

