当列A的值为“OPEN”时,我试图检索列B的最近值(当前行上方),然后在列A的值为“CLOSE”的当前行上填充此值。下面的代码几乎可以工作,但当列A的值为“CLOSE”而不是“OPEN”时,它检索的是最近值(当前行上方)。下面是我正在使用的代码:
data.loc[(data['A'] == "CLOSE"), 'C'] = data.groupby('A')['B'].transform(lambda x: x.shift()). The output of the table is as below.
字符串
的数据
然而,当列A =“CLOSE”时,第一个示例的列C的值应为“23120”。对于列A =“CLOSE”的下一个示例,列C的值应为23330,依此类推。
有什么办法可以修复这个代码吗?先谢谢你。
data.loc[(data['A'] == "CLOSE"), 'C'] = data.groupby('A')['B'].transform(lambda x: x.shift()). The output of the table is as below.
型
的
然而,当列A =“CLOSE”时,第一个示例的列C的值应为“23120”。对于列A =“CLOSE”的下一个示例,列C的值应为23330,依此类推。
有什么想法,我可以修复这个代码吗?
2条答案
按热度按时间3htmauhk1#
你可以使用
map()
来查找B列的对应值,当A列是'open'的时候。字符串
2cmtqfgy2#
可以使用shift:
字符串