假设我创建了一个带有两列的 pandas DataFrame,其中一列包含一些数字,另一列包含字母。像这样:
import pandas as pd
from pprint import pprint
df = pd.DataFrame({'a': [1,2,3,4,5,6], 'b': ['y','x','y','x','y', 'y']})
pprint(df)
a b
0 1 y
1 2 x
2 3 y
3 4 x
4 5 y
5 6 y
现在说我要创建第三列 ( c
),其值等于a
whenb
等于 x 的最后一个值。在b
尚未遇到 x 值的情况下,值 inc
应默认为 0。
该过程应该会产生以下结果:
last_a = 0
c = []
for i,b in enumerate(df['b']):
if b == 'x':
last_a = df.iloc[i]['a']
c += [last_a]
df['c'] = c
pprint(df)
a b c
0 1 y 0
1 2 x 2
2 3 y 2
3 4 x 4
4 5 y 4
5 6 y 4
有没有更优雅的方法可以在有或没有熊猫的情况下完成此任务?