【发布时间】:2014-04-04 16:43:34
【问题描述】:
访问 Pandas DataFrame df 中的数据时出现错误:
ipdb> df.loc[1988, 'ATTEND']
*** ValueError: Length mismatch: Expected axis has 0 elements, new values have 1481 elements
1988 和 'ATTEND' 都在 df 中:
ipdb> 1988 in df.index
True
ipdb> 'ATTEND' in df.columns
True
我不知道这个错误是关于什么的。有什么想法吗?
提前致谢。
例子:
ipdb> df.iloc[21875:21880, 277:280]
FUND ATTEND MAATTEND
1988 3 1 4
1988 2 3 0
1988 2 2 2
1988 2 2 7
1988 2 3 2
ipdb> df.loc[1988, 'ATTEND']
*** ValueError: Length mismatch: Expected axis has 0 elements, new values have 1481 elements
GSSFilename = 'GSS Dataset/GSS7212_R2_copy.sav'
data = srw.SavReader(pathToData + GSSFilename)
df = pd.DataFrame(data.all(), index=data[:,0], columns=ALL_VARIABLE_NAMES)
with data:
data = np.array(data.all())
更新: 我认为这个问题是由两个不同的 Python 实例访问同一个 .sav 文件引起的。
【问题讨论】:
-
什么版本的 pandas/numpy?请发布框架和 df.dtypes 的示例,df.info()
-
你能找到索引和列位置并提取一个小的子帧,使用 iloc 也失败了吗?
-
@Jeff,所有数据类型都是 float64。 Numpy 是 1.7.1,Pandas 是 0.13.1
-
@AndyHayden,例如:ipdb> df.iloc[21875:21880, 277:280] 基金参加 MAATTEND 1988 3 1 4 1988 2 3 0 1988 2 2 2 1988 2 2 7 1988 2 3 2 ipdb> df.loc[1988, 'ATTEND'] *** ValueError: Length mismatch: Expected axis has 0 elements, new values have 1481 elements
-
@Jeff,刚刚将 Numpy 更新到 1.8.1 仍然遇到同样的问题。