pandas 计算同一列前后2行增长率的函数
时间: 2023-12-23 13:01:57 浏览: 111
pandas 选取行和列数据的方法详解
可以使用pandas中的shift方法和apply方法来计算同一列前后2行的增长率。示例代码如下:
```python
import pandas as pd
data = {'sales': [100, 120, 150, 130, 180]}
df = pd.DataFrame(data)
# 使用shift方法移动一行前和一行后的数据
df['last_sales'] = df['sales'].shift(1)
df['next_sales'] = df['sales'].shift(-1)
# 使用apply方法计算增长率
df['growth_rate'] = df.apply(lambda row: (row['next_sales'] - row['last_sales']) / row['last_sales'], axis=1)
# 打印结果
print(df)
```
在上面的代码中,我们首先使用shift方法将sales列向上和向下移动一行,并将结果保存在last_sales列和next_sales列中。然后使用apply方法计算增长率,将结果保存在growth_rate列中。最后打印整个DataFrame。
需要注意的是,由于第一行和最后一行没有前一行或后一行的数据,所以增长率会被计算为NaN。如果需要去掉这些行,可以使用dropna方法删除包含NaN值的行,如下所示:
```python
# 删除包含NaN值的行
df = df.dropna()
# 打印结果
print(df)
```
阅读全文