【问题标题】:Pandas True False MatchingPandas 真假匹配
【发布时间】:2020-08-16 17:52:01
【问题描述】:

对于这个表:

我想生成“desired_output”列。实现这一目标的一种方法可能是:

  1. col_1 中的所有 True 值都直接传输到 desired_output(红色箭头)
  2. 在 desired_output 中,将 True 值置于任何现有 True 值之上(绿色箭头)

我尝试过的代码:

df['desired_output']=df.col_1.apply(lambda x: True if x.shift()==True else False)

谢谢

【问题讨论】:

    标签: pandas dataframe boolean calculated-columns


    【解决方案1】:

    您可以通过| 链接按位OR 原始值,并按Series.shift 移位值:

    d = {"col1":[False,True,True,True,False,True,False,False,True,False,False,False]}
    df = pd.DataFrame(d)
    
    df['new'] = df.col1 | df.col1.shift(-1)
    print (df)
         col1    new
    0   False   True
    1    True   True
    2    True   True
    3    True   True
    4   False   True
    5    True   True
    6   False  False
    7   False   True
    8    True   True
    9   False  False
    10  False  False
    11  False  False
    

    【讨论】:

      【解决方案2】:

      试试这个

      df['desired_output'] = df['col_1']
      df.loc[1:, 'desired_output'] = df.col_1[1:].values | df.col_1[:-1].values
      print(df)
      

      【讨论】:

        【解决方案3】:

        如果这些被保存为字符串。 all_caps (真/假) 输入:

           col_1
        0   True
        1   True
        2   False
        3   True
        4   True
        5   False
        6   Flase
        7   True
        8   False
        

        代码:

        df['desired']=df['col_1']
        for i, e in enumerate(df['col_1']):
            if e=='True':
                df.at[i-1,'desired']=df.at[i,'col_1']
        df = df[:(len(df)-1)]
        df
        

        输出:

           col_1    desired
        0   True    True
        1   True    True
        2   False   True
        3   True    True
        4   True    True
        5   False   False
        6   Flase   True
        7   True    True
        8   False   False
        

        【讨论】:

        • @AngusStevenson 如果将值保存为字符串,我的答案将特别有效。 “真”(类似于您在问题中的图片),而不是“真”。
        猜你喜欢
        • 2016-02-08
        • 1970-01-01
        • 2011-10-26
        • 2014-12-22
        • 1970-01-01
        • 2015-07-30
        • 2018-06-09
        • 1970-01-01
        • 2015-03-12
        相关资源
        最近更新 更多