如何保持价值和价值低于转变(1)

时间:2019-01-30 18:06:03

标签: database pandas numpy dataframe data-science

我想知道当值等于(“ NaN”)时如何保持一个值和一个以下的值。谢谢。示例

df = pd.DataFrame ({'list': ["juan", "NaN", "Maria", "NaN", "juan", "juanita", "juan", "NaN"]})

我只想继续

df = pd.DataFrame ({'list': ["juan", "NaN", "juan", "NaN"]})

仅当值为“ juan”且下面的值为“ NaN”时。但是我不想使用“ for”……我认为类似“ shift(1)”

1 个答案:

答案 0 :(得分:1)

首先,我们将获取包含“ juan”并在其下一行包含“ NaN”的每一行的索引:

cond1 = df['list'] == 'juan'
cond2 = df['list'].shift(-1) == 'NaN'
idxs = cond1 & cond2
idxs = idxs[idxs == True]

我们差不多完成了,但是由于您也希望在最终输出中也包含后续的“ NaN”行,因此我们需要包括它们的索引:

idxs = np.array([[i,i+1] for i in idxs.index.values]).flatten()

要获得所需的输出,我们只需从原始df中选择以下索引:

output = df.loc[idxs]

哪个给了我们

    list
0   juan
1   NaN
6   juan
7   NaN
相关问题