繁体   English   中英

基于前一行和当前行的多个 IF 条件 - Pandas

[英]Multiple IF condition based on previous and the current row - Pandas

我想创建一个新列G ,如果D列的前一行包含chrgfloat并且当前行包含Dischrg ,则该列应显示1 第一行应包含0

我想要与以下 excel 代码等效的 pandas 代码:

=IF(AND(D2="Chrg",D3="Dischrg"),G2+1,IF(AND(D2="Float",D3="Dischrg"),G2+1,0))

D         G
Chrg      0
Dischrg   1
Float     0
Dischrg   0
Float     0 
Dischrg   1

您可以移动列,以便在同一行中具有先前的值:

In [1]: import pandas as pd
In [2]: df = pd.DataFrame([{"a": 1, "b": 1}, {"a": 2, "b": 2}, {"a": 3, "b": 3}])
In [3]: df
Out[3]: 
   a  b
0  1  1
1  2  2
2  3  3

In [4]: df["prev"] = df.a.shift(1)

In [5]: df
Out[5]: 
   a  b  prev  
0  1  1   NaN
1  2  2   1.0
2  3  3   2.0

Series.shiftSeries.isin一起使用:

m1 = df['D'].shift().isin(['Chrg', 'Float'])  # Chrg or Float previous row
m2 = df['D'].eq('Dischrg')                    # Current row Dischrg

df['G'] = (m1&m2).astype(int)

         D  G
0     Chrg  0
1  Dischrg  1
2    Float  0
3  Dischrg  1
4    Float  0
5  Dischrg  1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM