如果条件为,则存储以前的df列值,不带循环



是否可以在pandas中不循环地检索上一列的值?

import pandas as pd
import numpy as np
df=pd.DataFrame({'a': [True, False, False, True, True, False], 'b': [0, 0, 0, 3, 4, 4]})
df
Out[427]: 
a  b
0   True  0
1  False  0
2  False  0
3   True  3
4   True  4
5  False  4
如果df[a'a']=True,则存储索引,否则存储以前的值
# Attempt 1
df['c'] = np.where(df['a'], df.index, df['c'].shift(1))

# Attempt 2
df['c'] = df.index
df['c'] = np.where(df['a'], df['c'], df['c'].shift(1))

在屏蔽非True值后,可以在索引转换的to_series上使用ffill

df['b'] = df.index.to_series().where(df['a']).ffill(downcast='infer')

输出:

a  b
0   True  0
1  False  0
2  False  0
3   True  3
4   True  4
5  False  4

最新更新