0
假设我创建了一个带有两列的熊猫数据框,其中一列包含一些数字,另一列包含字母。就像这样:当列y等于z时,pandas获得第x列的最后一个值。
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
的最后一个值时b
是等于x。在其中b
还没有遇到x的值的情况下,c
值应该默认为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
是否有一个更优雅无论有或没有熊猫完成这个方法?