问题描述
我有这样的系列:
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