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