疑问:pandas.concat接收字典输入且axis=1时为何呈现层级列结构?
pd.concat处理字典输入的特殊逻辑
当你给pd.concat传入字典时,不管axis参数设为0还是1,pandas都会把字典的键当作keys参数的值,自动给结果生成多层索引(MultiIndex),这就是你看到"z"变成上层列索引的原因。
为什么和预期不符?
你以为axis=1是单纯横向拼接列,但字典输入触发了额外的索引层级逻辑:
- 字典的键(这里是"z")会成为对应轴上的上层索引
- 原DataFrame的列(Name、Age)则作为下层索引
如果只是想做普通的横向拼接(不需要上层索引),别用字典传参,直接传列表:
z = pd.concat([df], axis=1) # 单一个df的话这步多余,多个df的话直接写[df1, df2]即可
多字典项的例子更直观
比如传入包含两个DataFrame的字典:
df2 = df.copy() z = pd.concat({"z": df, "w": df2}, axis=1) print(z)
输出会是:
z w Name Age Name Age 0 tom 10 tom 10 1 nick 15 nick 15 2 juli 14 juli 14
能清楚看到字典的键如何对应多层列索引的上层。
核心总结
- 字典输入
pd.concat→自动用字典键生成对应轴的多层索引 - 普通横向/纵向拼接→用列表传参,不要用字典
内容的提问来源于stack exchange,提问作者desert_ranger
相关产品推荐
相关产品推荐

