python - 在 Pandas 中用以前的非零值替换零时获取“TypeError:数据类型不理解”
问题描述
尝试执行如下所示的代码行时,我得到“ TypeError:数据类型不理解”:
df['c'].replace(0, method='ffill', inplace=True)
上面的代码基本上是将 column 中的每个零值替换为其先前的非零值c
。列中值的数据类型c
是整数,只有两个 NaN。用零替换 NaN 后仍然会出现该错误,但是当我在上述代码之前添加以下行时,它可以正常工作:
df.dropna(inplace = True)
那么这里到底发生了什么?如何在c
不删除 DataFrame 中包含 NaN 的任何行的情况下将每个零值替换为其先前的非零值?
解决方案
假设所有丢失的数据都得到处理,即NaNs
用一些期望的值替换,
some_desired_value = 0 # Maybe different in your case
df['c'] = df['c'].fillna(some_desired_value)
NaN
用然后前向填充替换零
df['c'].replace(0, pd.np.nan).ffill()
如果列中没有不需要的值,即使您的代码也应该可以工作
df['c'].replace(0, method='ffill', inplace=True)
推荐阅读
- sql - 需要使用 pgrouting 的 Lat,long 形式的路径
- javascript - 如何比较2个数组的索引值?
- c++ - 如何在不知道他拥有哪些构造函数的情况下初始化属性?
- eclipse - Eclipse subversion checkout SSL 和 SSH 的区别
- python - 遍历目录中的文件会创建一个额外的 nan 数组
- android - 打开 CV 项目未构建
- javascript - X-Frame-Options:DENY 不适用于 Spring Boot REST API
- c# - 如何使用 C# 在页面对象模型中实现“findelements”
- python - 有没有更快的方法来删除熊猫中数据框的所有空白/标签?
- c - 如何在链表的末尾添加一个节点?