python - 使用 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”列中,但我想知道确切的索引或一些信息,以便我可以检查发生了什么。我怎么能这样做?
解决方案
推荐阅读
- google-cloud-platform - 需要帮助在 Google Cloud 上设置 A 记录
- android - Kotlin Android 扩展 - 合成属性在支持片段中不可用
- java - 删除user id下的单个child,随机生成childname,android studio,firebase
- r - 修改列表和环境
- android - Android Studio 非法状态异常:找不到 android:onClick 的方法(视图)
- python - python - cx_Freeze ImportError
- php - 按包含逻辑运算符的键对数组进行排序
- angular - Angular 或 Angular 6 中的跨域资源共享 (CORS)。使用不同端口在 localhost 上进行跨域调用时出现问题
- mysql - 为什么 CHAR 在 MySQL 中没有填充
- sql - derby sql 两个聚合值之间的区别或如何组合两个 sql 语句