Python 如何基于dataframe中前一行的行值创建新列?

Python 如何基于dataframe中前一行的行值创建新列?,python,pandas,Python,Pandas,我想添加一个列,如果T行的股票调整后收盘价相对于T-1行的调整后收盘价上涨,则将其编码为1,如果下跌,则将其编码为0 数据帧看起来像: 例如,新列的行索引1298应为0 最好的方法是什么(例如,通过np.where()?)来完成这项工作?任何输入都值得赞赏。您可以首先对日期列上的值进行排序,以确保它们的顺序正确,从而执行比较,然后您可以使用np.where和shift()要将Adj Close中的上一个值与当前值进行比较: # Sort by date df.sort_values(by='D

我想添加一个列,如果T行的股票调整后收盘价相对于T-1行的调整后收盘价上涨,则将其编码为1,如果下跌,则将其编码为0

数据帧看起来像:

例如,新列的行索引1298应为0


最好的方法是什么(例如,通过np.where()?)来完成这项工作?任何输入都值得赞赏。

您可以首先对日期列上的值进行排序,以确保它们的顺序正确,从而执行比较,然后您可以使用
np.where
shift()
要将Adj Close中的上一个值与当前值进行比较:

# Sort by date
df.sort_values(by='Date',ascending=True)

# Create a column comparing previous Adj Close with current Adj Close
import numpy as np
df['i'] = np.where(df['Adj Close'].shift(1) < df['Adj Close'],1,0)
df
            Date        Open        High  ...  Adj Close    Volume  i
index                                     ...                        
1297  2021-03-01  104.540001  133.990005  ...     120.40  49597300  0
1298  2021-03-02  116.930000  133.199900  ...     118.18  33640400  0
1299  2021-03-03  122.500000  127.700000  ...     124.18  19173700  1