我认为这应该是相对容易的,但我是个笨蛋!你知道吗
需要在一个新的列(称为B列)中返回结果,该列基于a列中下一行的结果
请打印下面的代码
import pandas as pd
df = pd.DataFrame({'A': ['BUY', 'BUY', 'HODL', 'SELL', 'HODL', 'HODL', 'BUY', 'SELL', 'SELL', 'BUY', 'BUY', 'HODL', 'SELL', 'SELL', 'SELL', 'HODL', 'SELL', 'SELL','BUY']})
print(df)
我需要一个新的列(B列)来返回基于以下内容的结果。你知道吗
从数据帧的底部开始。A列中的最后一个单元格(即A18='BUY')总是可以为B列中的最后一个单元格返回相同的结果
A列(即A17)的下一行是“卖出”。我认为这是一个变化,因此细胞B17现在也应该是一个'出售'
A列的下一行(即A16)又是“卖出”。由于这与A17没有变化,B16细胞现在应该是“NA”
A列(即A15)上的下一行是“HODL”。所有“HODL”单元格应始终反映为B列中的“HODL”单元格
但是,如果单元格A15再次是“SELL”,则在B列中应用另一个“NA”
“卖出”单元格的原则同样适用于“买入”单元格
提供以下df只是为了提供预期结果的可视化:
import pandas as pd
df = pd.DataFrame({'A': ['BUY', 'BUY', 'HODL', 'SELL', 'HODL', 'HODL', 'BUY', 'SELL', 'SELL', 'BUY', 'BUY', 'HODL', 'SELL', 'SELL', 'SELL', 'HODL', 'SELL', 'SELL','BUY'], 'B': ['NA', 'BUY', 'HODL', 'SELL', 'HODL', 'HODL', 'BUY', 'NA', 'SELL', 'NA', 'BUY', 'HODL', 'NA', 'NA', 'SELL', 'HODL', 'NA', 'SELL','BUY']})
print(df)
numpy.select & Series.shift
我们可以使用^{} 来实现这一点,这样我们就可以定义多个条件,并根据这些条件为新的列B赋值
在我们的条件中,我们使用^{} ,这样我们就可以检查下一个值是
SELL
还是BUY
。你知道吗^{} 与例如使用
== 'SELL'
相同注意我反转了您的数据帧,因为您想从下往上应用逻辑,所以我使用
df[::-1]
来实现这一点。这与Python中反转列表的方法相同。你知道吗输出
相关问题 更多 >
编程相关推荐