python - Pandas 的百分比变化

标签 python pandas

我有一个简单的数据框如下:

>>> df
   median quarter status
0     240  2014-1     BV
1     300  2014-2     BV
2     240  2014-3     BV
3     450  2014-4     BV 
4     300  2014-1   CORR
5     240  2014-2   CORR
6     300  2014-3   CORR
7     420  2014-4   CORR

现在,我只想过滤一年中前两个季度的值。所以我这样做:

>>> df[df['quarter'].isin(['2014-1','2014-2'])]
    median quarter status
0     240  2014-1     BV
1     300  2014-2     BV
4     300  2014-1   CORR
5     240  2014-2   CORR

现在我想找出两个季度的中值之间的百分比变化,所以我这样做:

>>> df['median'].pct_change()
0     NaN
1    0.25
2    0.00
3   -0.20
Name: median, dtype: float64

然而,我真正需要的只是两个季度之间的百分比变化以及这样的状态:

>>> df
    pc_change status
0   25        BV
1   -20       CORR

我该怎么做?

最佳答案

一个简单的pandas.DataFrame.query可能适合您的需要。在您的测试数据中这无关紧要,但您还需要确保状态的排序

df.sort( 'status', inplace=True)
df['change'] = df['median'].pct_change()
#   median quarter status  change
#0     240  2014-1     BV     NaN
#1     300  2014-2     BV    0.25
#2     300  2014-1   CORR    0.00
#3     240  2014-2   CORR   -0.20

df.query( 'quarter=="2014-2"')
#   median quarter status  change
#1     300  2014-2     BV    0.25
#3     240  2014-2   CORR   -0.20

关于python - Pandas 的百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489735/

相关文章:

python - 在 Tornado 项目中验证表单数据的最佳方法?

python - 根据像素颜色的函数更改像素颜色

python - 使用np.where使用自创建函数向pandas添加列

python - 转换错误: Failed to convert value(s) to axis units

Python Jupyter Notebook - 无法通过路径打开 CSV 文件

python - 尝试使用 BeautifulSoup4 从类(class)中获取某些链接

python - GitPython 并向 Git 对象发送命令

python - 添加具有不同列名的两个 Pandas 系列的值

python - 在 redis session 中保存静态文件(Python flask)

使用 Popen 启动的 Python 服务存在日志记录 stderr 和 stdout 重定向问题