如何根据包含特定值的上一行填充 NaN

数据挖掘 Python 熊猫 数据框
2022-03-07 13:38:08

我想使用同一股票前一个交易日的值来填充缺失的数据。在这个例子中,AAPL 的股票应该是 100。

我已经尝试过,fillna但我无法根据库存选择特定的行。

我的数据:

date       stock   price
22/12/20   MSFT    87
22/12/20   AAPL    99
22/12/20   FCA     81
23/12/20   MSFT    90
23/12/20   AAPL    100
23/12/20   FCA     80
24/12/20   MSFT    91
24/12/20   AAPL   *NaN*
24/12/20   FCA     78
1个回答

您可以groupby通过'stock'前向填充缺失值ffill并将其结果用于fillna. 例如:

date       stock   price
22/12/20   MSFT    87
22/12/20   AAPL    99
22/12/20   FCA     81
23/12/20   MSFT    NaN
23/12/20   AAPL    100
23/12/20   FCA     80
24/12/20   MSFT    91
24/12/20   AAPL    NaN 
24/12/20   FCA     NaN

df.fillna(df.groupby('stock').ffill())

结果:

       date stock  price
0  22/12/20  MSFT   87.0
1  22/12/20  AAPL   99.0
2  22/12/20   FCA   81.0
3  23/12/20  MSFT   87.0
4  23/12/20  AAPL  100.0
5  23/12/20   FCA   80.0
6  24/12/20  MSFT   91.0
7  24/12/20  AAPL  100.0
8  24/12/20   FCA   80.0