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

>>> 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/

10-12 02:28