步骤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