我有一个这样的数据帧
Date Ticker Price
2019-03-21 AAPL 100
2019-03-21 GOOG 101
2019-03-21 IBM 102
2019-03-25 AAPL 90
2019-03-25 GOOG 91
2019-03-25 IBM 92
2019-03-27 AAPL 110
2019-03-27 GOOG 111
2019-03-27 IBM 112
我正在尝试添加一个名为“LastPrice”的列,该列查找股票代码的最后日期价格。日期不是连续的。谢谢
Date Ticker Price LastPrice
2019-03-21 AAPL 100
2019-03-21 GOOG 101
2019-03-21 IBM 102
2019-03-25 AAPL 90 100
2019-03-25 GOOG 91 101
2019-03-25 IBM 92 102
2019-03-27 AAPL 110 90
2019-03-27 GOOG 111 91
2019-03-27 IBM 112 92
假设您的数据是按日期排序的,您可以使用groupby和shift
您可以使用许多方法查找值,下面是一种更简单的方法
df["Ticker"]=="AAPL"
将返回一个真/假值数组。当df["Ticker"]
包含"AAPL"
时为Truedf.loc
将位于数据帧中,其中df["Ticker"]=="AAPL"
数组中的真值与数据帧中的行相对应。这就是为什么您只看到df["Ticker"]=="AAPL"
所在的行李>df.loc
定位价格列李>lambda
函数并将其应用于数据帧中的列,因此axis = 1
。此函数接受行中的值并返回True
ifrow["Date"] == "2019-03-27" and row["Ticker"] == "AAPL"
elseFalse
。与第1点中的概念相同,df.loc
用于定位True
出现在数组中的数据帧中的位置。您可以将其视为dataframe=[1,2,3],array=[True,False,True],并将它们匹配起来,然后仅在数组中为True时才获取该值。因此,在这种情况下,只有“1”和“3”李>相关问题 更多 >
编程相关推荐