Pandas dataframe -根据一列中最近的值从另一列中检索特定值

j0pj023g  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(146)

当列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,依此类推。
有什么想法,我可以修复这个代码吗?

3htmauhk

3htmauhk1#

你可以使用map()来查找B列的对应值,当A列是'open'的时候。

data.loc[data['A'] == "CLOSE", 'C'] = data.loc[data['A'] == "CLOSE", 'A'].map(data.loc[data['A'] == "OPEN", 'B'])

字符串

2cmtqfgy

2cmtqfgy2#

可以使用shift

data['C'] = data['B'].shift()
data.loc[data['A'] == "OPEN", 'C']=''

字符串

相关问题