概述
这是我目前的代码:
d = {'a':[1,2,3,1,1],'b':[10,20,30,40,50,60,70,80]} df = pd.DataFrame(d) df['c'] = df['b'][df['a'] == df['a'].prev()]
我想要的输出:
a b c 0 1 10 NaN 1 2 20 NaN 2 3 30 NaN 3 1 40 10 4 2 50 20 5 3 60 30 6 2 70 50 7 1 80 40
…我没有得到因为.prev()不是真的.有什么想法吗?
In [110]: df['c'] = df.groupby('a')['b'].transform(lambda x: x.shift()) In [111]: df Out[111]: a b c 0 1 10 NaN 1 2 20 NaN 2 3 30 NaN 3 1 40 10.0 4 2 50 20.0 5 3 60 30.0 6 2 70 50.0 7 1 80 40.0
或者更好的选择 – 使用GroupBy.shift()(谢谢@Mitch)
In [114]: df['c'] = df.groupby('a')['b'].shift() In [115]: df Out[115]: a b c 0 1 10 NaN 1 2 20 NaN 2 3 30 NaN 3 1 40 10.0 4 2 50 20.0 5 3 60 30.0 6 2 70 50.0 7 1 80 40.0
总结
以上是编程之家为你收集整理的python – Pandas:查找上一行匹配值全部内容,希望文章能够帮你解决python – Pandas:查找上一行匹配值所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧