基于一列中的多个条件创建新列



步骤1:我有一个数据帧,我想在其中找到C列中一个元素与另一个元素的差异(df.series.diff(((。

第 2 步:如果与步骤 1 的元素差异达到大于 4 的阈值,并且持续超过 2 个连续行,并且没有减少超过 2 个,而不是我想在新列中标记它。

想要得到这个结果:

    A           B(time)    C(load)       D(New column with logic) 
  account 1     0            1           N        
  account 1     1:00         2.2         N   
  account 1     2:00         3.3         N
  account 1     3:00         9.6         N 
  account 1     4:00         10          Y
  account 1     5:00         12          Y 
  account 1     6:00         9           Y
  account 1     7:00         2.3         N
  account 1     8:00         6.5         N   
  account 1     9:00         7.0         Y

到目前为止,我已经尝试过了,但它不仅仅适用于 and 之前的第一部分:

    df['new']=df.load.diff(1).cumsum().ge(4) & df.load.diff(1).le(2)

尝试更改&.

df['new']=df.load.diff(1).cumsum().ge(4) & df.load.diff(1).le(2)

构建的示例数据库

df = pd.DataFrame(data={"A": ['account 1', 'account 1','account 1','account 1','account 1','account 1', 'account 1', 'account 1', 'account 1', 'account 1'], 
                                "B(time)": [0, 1 ,2,3,4,5, 6, 7, 8, 9],
                                "C(load)": [1, 2.2, 3.3, 9.6, 10, 12, 9, 2.3, 6.5, 7.0]}) 

是:

    A           B(time) C(load)
0   account 1      0    1.0
1   account 1      1    2.2
2   account 1      2    3.3
3   account 1      3    9.6
4   account 1      4    10.0
5   account 1      5    12.0
6   account 1      6    9.0
7   account 1      7    2.3
8   account 1      8    6.5
9   account 1      9    7.0

如果你写:

df['new']=df['C(load)'].diff(1).cumsum().ge(4) & df['C(load)'].diff(1).le(2)

结果是:

     A        B (time) C(load)  new
0   account 1     0    1.0     False
1   account 1     1    2.2     False
2   account 1     2    3.3     False
3   account 1     3    9.6     False
4   account 1     4    10.0    True
5   account 1     5    12.0    True
6   account 1     6    9.0     True
7   account 1     7    2.3     False
8   account 1     8    6.5     False
9   account 1     9    7.0     True

相关内容

  • 没有找到相关文章

最新更新