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

Pandas DataFrame创建出错求助:列值错位原因及解决方法

问题原因与解决办法

核心原因

你创建DataFrame时误用了**集合({})**而非有序数据结构。集合有两个关键特性导致了错位问题:

  • 无序性:集合内部元素没有固定顺序,Pandas读取集合时的遍历顺序由元素哈希值决定。不同长度、内容的字符串哈希值不同,短州名碰巧哈希后顺序和列名匹配,长州名就会因为哈希顺序变化导致列值错位。
  • 唯一性:你代码里重复的{'Sam', 19, 'Tamil Naidu'}会被自动去重,最终DataFrame里只会保留一条该记录,这也是隐藏的问题。

解决办法

方法1:用有序列表替代集合

列表([])是有序结构,元素顺序和列名顺序严格对应,直接把大括号换成中括号即可:

import pandas as pd
names = ['Name', 'Score', 'State']
df = pd.DataFrame([['Sam', 19, 'Tamil Naidu'],
                   ['Kari', 10, 'Himachal Pradesh'],
                   ['Sam', 19, 'Tamil Naidu'],
                   ['Samual Dan', 11, 'Haryana']], columns = names)

方法2:用字典明确映射列与值(更严谨)

字典可以指定每个列对应的具体值,完全规避顺序问题,即使列名顺序调整也不会出错:

import pandas as pd
df = pd.DataFrame([{'Name': 'Sam', 'Score': 19, 'State': 'Tamil Naidu'},
                   {'Name': 'Kari', 'Score': 10, 'State': 'Himachal Pradesh'},
                   {'Name': 'Sam', 'Score': 19, 'State': 'Tamil Naidu'},
                   {'Name': 'Samual Dan', 'Score': 11, 'State': 'Haryana'}])

(若需要固定列顺序,可额外指定columns=names参数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:39:54