【问题标题】:Setting conditions in a series (if 0 < x < len_of_dataframe) [duplicate]设置一系列条件(如果 0 < x < len_of_dataframe)[重复]
【发布时间】:2020-09-29 09:51:27
【问题描述】:

我有这样的系列:

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

我想指定条件以便:

注意: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")

但是这不起作用(对于条件 if 0

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

【问题讨论】:

    标签: python-3.x pandas series


    【解决方案1】:

    您可以使用np.select

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

    注意:我假设您的系列没有值 > 537

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-04
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2018-06-24
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多