已更新
我有一个Pandas数据框,想使用条件前一行中的值
$result = $con->execute ();
// short
$result = $this->Messages->getConnection()->execute ('Select * from ...')
// or ($aumTable is declared in question)
$result = $aumTable->getConnection()->execute ('Select * from ...');
输出:
df = pd.DataFrame(data=[[1, 2],
[1, 4],
[1, 2],
[1, 3],
[1, 2],
[5, 3],
[1, 4]],
columns=['A', 'B'])
df.loc[df.A < df.B, 'B'] = df.B.shift(1)
df.loc[df.A >= df.B, 'B'] = df.B
但是我打算得到以下内容:
A B
0 1 NaN
1 1 2.0
2 1 4.0
3 1 2.0
4 1 3.0
5 5 3.0
6 1 3.0
那么我该如何基本上在数据帧中“写” A B
0 1 NaN
1 1 2.0
2 1 2.0
3 1 2.0
4 1 2.0
5 5 3.0
6 1 3.0
的结果,以便下一行可以再次使用它?
如果满足条件,则从上一行获取结果,如果不保留该值。
答案 0 :(得分:0)
我认为您正在寻找一种groupby
转换first
:
df['B'] = df.groupby((df['A'] >= df['B']).cumsum())['B'].transform('first')
df
A B
0 1 2
1 1 2
2 1 2
3 1 2
4 1 2
5 5 3
6 1 3