【问题标题】:TypeError: only integer scalar arrays can be converted to a scalar index when use Pandas FillnaTypeError:使用 Pandas Fillna 时,只能将整数标量数组转换为标量索引
【发布时间】:2021-01-17 02:32:57
【问题描述】:

更新:这似乎是由于 .loc ,如果我使用原始 df 来自 pd.read_excel,没问题。

我有一个具有如下 Dtypes 的数据框。

这是数据框的 csv: CSV File

日期 datetime64[ns] 金额 float64 货币对象 标识对象

我用下面的代码替换了NaT、NaN

a=np.datetime64('2000-01-01')
values={'Date':a,'Amount':0,'Currency':'0','ID':'0'}
df.fillna(value=values,inplace=True)

但是,我得到了错误:TypeError: only integer scalar arrays can be convert to a scalar index.

我还尝试用每一列填充na,但没有看到错误消息,但 Nan 和 Nat 仍然保持不变。

a=np.datetime64('2000-01-01')
df[['Date']].fillna(a,inplace=True)
df[['Amount']].fillna(0,inplace=True)
df[['Currency']].fillna('0',inplace=True)
df[['ID']].fillna('0',inplace=True)

这对我来说似乎很奇怪,因为我已经成功使用了很多次 fillna。 请给我一个建议。非常感谢。

【问题讨论】:

  • 你能给出示例 csv 作为文本格式而不是图像吗?
  • 我刚刚在帖子顶部添加了指向 csv 文件的链接。
  • 我尝试阅读您的 csv,但无法重现错误。在我这边,它可以按预期使用您的代码 - df.fillna(value=values,inplace=True)

标签: python pandas dataframe fillna


【解决方案1】:

我认为CurrencyId 列中有字符串NaN,所以使用:

df = df.replace({'Currency': {'NaN': '0'}, 'ID':{'NaN': '0'}})

【讨论】:

  • 谢谢。我会试试你的方法。但是我仍然想知道为什么当我尝试第一种方法时它会抛出错误消息。
  • 我试过了,还是不行。我刚刚在帖子顶部添加了指向 csv 文件的链接。可以看看吗?
猜你喜欢
  • 2020-04-30
  • 2020-07-23
  • 2019-03-15
  • 2020-04-20
  • 2020-03-12
  • 2019-01-09
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多