【问题标题】:NotImplementedError: fill_value 0 not supportedNotImplementedError:不支持填充值 0
【发布时间】:2016-06-13 09:06:16
【问题描述】:

我对 Python 比较陌生,现在卡住了

frame = DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
series = frame.iloc[:,0]
frame.sub(series, axis = 1,fill_value=0)

给出这个错误, C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in _ combine_match_columns(self, other, func, level, fill_value) 3470 如果填充值不是无: 第3471章 -> 3472 填充值) 3473 第3474章

NotImplementedError: fill_value 0 not supported

但在Dataframe.sub方法的文档中,支持fill_value参数。

有人能解释一下这个错误吗?

【问题讨论】:

  • 这很奇怪,因为将系列转换为 DataFrame 效果很好:frame.sub(series.to_frame(), axis = 1,fill_value=0)
  • 我想fill_value 的需要是多余的,可以通过在前面的步骤中执行fillna 轻松消除。
  • 建议不要使用ix,它已被弃用。 [参见文档](pandas.pydata.org/pandas-docs/stable/…)。查看使用.loc.iloc,具体取决于您是按列标题标签还是位置访问。

标签: python-2.7 pandas


【解决方案1】:

fill_value 和相关的错误消息在这里似乎是一个红鲱鱼。换句话说,sub() 被这里的对齐方式弄糊涂了,恰好是 fill_value 是它崩溃的地方。

要看到这个,取出填充值:

frame.sub(series, axis = 1)
Out[194]: 
        Ohio  Oregon  Texas  Utah   b   d   e
Utah     NaN     NaN    NaN   NaN NaN NaN NaN
Ohio     NaN     NaN    NaN   NaN NaN NaN NaN
Texas    NaN     NaN    NaN   NaN NaN NaN NaN
Oregon   NaN     NaN    NaN   NaN NaN NaN NaN

这几乎肯定不是您想要的。现在如果你检查series,你会看到它被命名为'b':

series.name
Out[197]: 'b'

但 pandas 似乎不会自动将名为“b”的系列与框架的“b”列对齐。我不知道是否应该这样做,但@AntonProtopopv 在评论中建议的修复允许pandas 正确对齐'b' 列。

frame.sub(series.to_frame(), axis = 1)
Out[195]: 
          b   d   e
Utah    0.0 NaN NaN
Ohio    0.0 NaN NaN
Texas   0.0 NaN NaN
Oregon  0.0 NaN NaN

我不确定你到底想在这里做什么,但不管怎样,如果你先把对齐弄直,那么 fill_value 应该会按预期工作。或者说实话,我可能只是按照@NickilMaveli 的建议在方法链中使用fillna,因为这似乎是填充缺失值的更明确(因此也更好)的方法。

最后一点:如果您打算在这里使用 numpy 广播(即从所有列中减去列 'b'),通常更容易先转换为数组,然后执行减法等操作。

frame.values - series.values.reshape(4,1)
Out[204]: 
array([[0., 1., 2.],
       [0., 1., 2.],
       [0., 1., 2.],
       [0., 1., 2.]])

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2022-01-26
    • 2018-07-29
    • 2022-12-19
    • 2016-03-12
    • 2013-06-14
    • 2016-08-01
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多