连续设置条件如果0 <x <len_of_dataframe

问题描述

我有这样的系列:

d = {'a': 0,'b': 1,'c': 22,'d': 537,'e': 537,'f': 0}
s = pd.Series(d)

我想分配条件,以便:

NB:len(df)= 537

if x=0: "E"
if x=537: "F"
if 0<x<537: "P"

我有以下内容

    df_len = len(df.index)
    no_of_na_empty = df.isna().sum()
    rslt_df = no_of_na_empty.loc[(no_of_na_empty > 0) & (no_of_na_empty < df_len)]
    no_of_na_empty = no_of_na_empty[rslt_df]
    no_of_na_empty = no_of_na_empty.mask(rslt_df,other="P")
    no_of_na_empty = no_of_na_empty.replace(to_replace=0,value="F")
    no_of_na_empty = no_of_na_empty.replace(to_replace=df_len,value="E")

但是这不起作用(对于0

d = {'a': "E",'b': "P",'c': "P",'d': "F",'e': "F",'f': "E"}
s = pd.Series(d)```

解决方法

您可以使用np.select

import numpy as np

s = np.select([s==0,s==537],["E","F"],"P")

print(s)

注意:我假设您的系列的值不大于537