我有一个数据框,其中一些值按日期排序,如果某个日期的某个项目没有值,则按NaN排序。对于每个值,我想用该值的log减去第一个值的log,而不是列中的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
。我知道它们发生在“Oro”和“SP500”列中,正如我在每个操作中所写的print(x)
,但我想知道确切的索引或一些信息,以便检查发生了什么。我怎么能这样做
目前没有回答
相关问题 更多 >
编程相关推荐