搜索 NaN 罢工
Searching for a NaN strike
我有一个数据框,其中某些列包含错误信息。此错误信息始终位于较长的 NaN 值序列之前。假设我有以下数据集:
import pandas as pd
from numpy import nan
d = {'Obs1': [1, 2, 3, 4, 5, 6, 7, 8], 'Obs2': [0.1, 0.1, nan, nan, nan, nan, 100, 101]}
df = pd.DataFrame(data=d)
"Obs1"没有错误信息,而"Obs2"在4-NaN序列之前有错误值。有谁知道如何在时间序列中找到这样一个更长的序列(例如出现 4 个 NaN 值),然后用 NaN 填充所有先前的条目?举个例子,我想要的输出是:
Output = {'Obs1': [1, 2, 3, 4, 5, 6, 7, 8], 'Obs2': [nan, nan, nan, nan, nan, nan, 100, 101]}
提前致谢
对于每一列,检查第i个元素和第(i+1)个元素是否为NaN,并找到满足第i个元素和第(i+1)个元素为NaN的最大索引(i) .
看下面的代码。
for col in df.columns:
cond = df[col].iloc[1:].isnull() + df[col].iloc[:-1].isnull() == 2
if sum(cond) >= 2:
df[col].iloc[:cond.index[-1] - 1] = nan
我有一个数据框,其中某些列包含错误信息。此错误信息始终位于较长的 NaN 值序列之前。假设我有以下数据集:
import pandas as pd
from numpy import nan
d = {'Obs1': [1, 2, 3, 4, 5, 6, 7, 8], 'Obs2': [0.1, 0.1, nan, nan, nan, nan, 100, 101]}
df = pd.DataFrame(data=d)
"Obs1"没有错误信息,而"Obs2"在4-NaN序列之前有错误值。有谁知道如何在时间序列中找到这样一个更长的序列(例如出现 4 个 NaN 值),然后用 NaN 填充所有先前的条目?举个例子,我想要的输出是:
Output = {'Obs1': [1, 2, 3, 4, 5, 6, 7, 8], 'Obs2': [nan, nan, nan, nan, nan, nan, 100, 101]}
提前致谢
对于每一列,检查第i个元素和第(i+1)个元素是否为NaN,并找到满足第i个元素和第(i+1)个元素为NaN的最大索引(i) .
看下面的代码。
for col in df.columns:
cond = df[col].iloc[1:].isnull() + df[col].iloc[:-1].isnull() == 2
if sum(cond) >= 2:
df[col].iloc[:cond.index[-1] - 1] = nan