【问题标题】:Pandas error "***ValueError: Length mismatch: Expected axis has 0 elements, new values have..."Pandas 错误“***ValueError:长度不匹配:预期轴有 0 个元素,新值有......”
【发布时间】: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 仍然遇到同样的问题。

标签: python pandas


【解决方案1】:

我认为这个问题是由两个不同的 Python 实例访问同一个 .sav 文件引起的

【讨论】:

    【解决方案2】:

    在我的例子中,我用来填充 DataFrame 的查询返回 0 行,因为数据库表是空的。填充表格后,错误就消失了。

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2020-07-10
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 2018-09-21
      相关资源
      最近更新 更多