我有一个简单的数据框,如下所示:
>>> 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/