首页 > 解决方案 > 使用 DataFrame 操作时的一些问题

问题描述

如果我在某个日期没有某个项目的值,我有一个数据框,其中一些值按日期和 NaN 排序。对于每个值,我想将其替换为该值的对数减去第一个值的对数,而不是列中的 NaN 值。我写了以下代码:

for x in AntCris.columns:
  aux=AntCris[x].dropna()
  aux2=aux.iloc[0]
  for y in AntCris[x].values:
    if np.isnan(y)==True:
      b=2
    else:
      a=np.log(y)-np.log(aux2)
      AntCris[x]=AntCris[x].replace([y],a)

我知道这不是很有效,我是一个该死的初学者。关键是数据框在操作之前看起来像这样在此处输入图像描述 但是在执行代码之后,我得到'Oro'和'Bonos'的第一个非NaN值变成-inf,好像它是0的对数,但它不是. 我不知道如何解决它,甚至不知道为什么会发生这种情况。

我也收到了这个输出警告:/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in log。我知道它们发生在我print(x)在每个操作中写的“Oro”和“SP500”列中,但我想知道确切的索引或一些信息,以便我可以检查发生了什么。我怎么能这样做?

标签: pythonpandasdataframelogarithm

解决方案


推荐阅读