首页 > 解决方案 > 在 Pandas 中用以前的非零值替换零时获取“TypeError:数据类型不理解”

问题描述

尝试执行如下所示的代码行时,我得到“ TypeError:数据类型不理解”:

df['c'].replace(0, method='ffill', inplace=True)

上面的代码基本上是将 column 中的每个零值替换为其先前的非零值c。列中值的数据类型c是整数,只有两个 NaN。用零替换 NaN 后仍然会出现该错误,但是当我在上述代码之前添加以下行时,它可以正常工作:

df.dropna(inplace = True)

那么这里到底发生了什么?如何在c不删除 DataFrame 中包含 NaN 的任何行的情况下将每个零值替换为其先前的非零值?

标签: pythonpython-3.xpandasreplace

解决方案


假设所有丢失的数据都得到处理,即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)

推荐阅读