【问题标题】:pandas DataFrame add fill_value NotImplementedErrorpandas DataFrame 添加 fill_value NotImplementedError
【发布时间】:2016-10-19 15:49:27
【问题描述】:

我有:

import pandas as pd
import numpy as np

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((1, 2, np.nan), (5, 5)))
s = pd.Series(range(5))

我想将s 添加到df 并跨行广播。通常我会:

df.add(s)

就这样吧。但是,我想用0 填充缺失值。所以我想我会:

df.add(s, fill_value=0)

但我得到了:

NotImplementedError:不支持填充值 0

问题:如何获得我预期的结果?

     0    1    2    3    4
0  1.0  1.0  2.0  3.0  4.0
1  2.0  3.0  2.0  4.0  4.0
2  1.0  1.0  3.0  4.0  4.0
3  1.0  1.0  2.0  4.0  6.0
4  1.0  3.0  4.0  3.0  5.0

【问题讨论】:

  • df.fillna(0.0) + s 不行吗?
  • 似乎是一个值得报告的错误。
  • 您报告了这个错误吗?我也有类似情况

标签: python pandas


【解决方案1】:

堆栈跟踪表明该参数从未实现:

.../pandas/core/frame.py in _combine_match_columns(self, other, func, level, fill_value)
   3470         if fill_value is not None:
   3471             raise NotImplementedError("fill_value %r not supported" %
-> 3472                                       fill_value)
   3473

我可以在添加之前填充缺失的值:

In [43]: df.fillna(0).add(s)
Out[43]:
   0  1  2  3  4
0  1  1  2  3  4
1  2  3  2  4  4
2  1  1  3  4  4
3  1  1  2  4  6
4  1  3  4  3  5

【讨论】:

  • .fillna 与重新索引之前发生的填充不同,而不是之后。
【解决方案2】:

0 和其他数字出现同样的错误。你也可以使用df.fillna(0):

df.fillna(0).add(s)
print df
>>>
     0    1    2    3    4
0  1.0  1.0  2.0  3.0  4.0
1  2.0  3.0  2.0  4.0  4.0
2  1.0  1.0  3.0  4.0  4.0
3  1.0  1.0  2.0  4.0  6.0
4  1.0  3.0  4.0  3.0  5.0

【讨论】:

    【解决方案3】:

    只需在df 上使用.fillna(0)

    df.fillna(0).add(s)
    

    【讨论】:

      【解决方案4】:

      我也遇到了这个问题。就我而言,这是因为我在数据框中添加了一个系列。

      fill_value=0 指令在将系列添加到系列或将数据框添加到数据框时适用于我。

      我刚刚创建了一个以系列为唯一列的新数据框,现在我可以使用 fill_value=0 添加它们。

      df1.add(df2, fill_value=0)                  # This works
      series1.add(series2, fill_value=0)          # This works
      df.add(series, fill_value=0)                # Throws error
      df.add(pd.DataFrame(series), fill_value=0)  # Works again
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-15
        • 2013-12-10
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        相关资源
        最近更新 更多