2014-08-30 86 views
1

我有一個包含2列的DataFrame。我需要知道問題的數量在多大程度上增加了。查找系列中值的百分比變化

In [19]: status 
Out[19]: 
    seconds questions 
0 751479 9005591 
1 751539 9207129 
2 751599 9208994 
3 751659 9210429 
4 751719 9211944 
5 751779 9213287 
6 751839 9214916 
7 751899 9215924 
8 751959 9216676 
9 752019 9217533 

我需要更改「問題」列的百分比,然後對其進行排序。這是行不通的:

status.pct_change('questions').sort('questions').head() 

有什麼建議嗎?

回答

3

嘗試這種方式來代替:

>>> status['change'] = status.questions.pct_change() 
>>> status.sort_values('change', ascending=False) 

    questions seconds change 
0 9005591 751479  NaN 
1 9207129 751539 0.022379 
2 9208994 751599 0.000203 
6 9214916 751839 0.000177 
4 9211944 751719 0.000164 
3 9210429 751659 0.000156 
5 9213287 751779 0.000146 
7 9215924 751899 0.000109 
9 9217533 752019 0.000093 
8 9216676 751959 0.000082 

pct_change可以在系列以及DataFrames執行,並接受您希望在計算變化週期數的整數參數(默認爲1)。

我還以爲你要排序上首先顯示的最大百分比變化'change'列...

+0

是否也可以得到改變的絕對值?例如,前3個值將是NaN,201538,1865 – shantanuo 2014-08-30 12:26:48

+2

當然 - 一種方法是通過設置status ['q_shift'] = status ['questions將'questions'的條目向下移動一行來創建新列「] .shift()'。這個變化就是'status ['questions'] - status ['q_shift']'。 – 2014-08-30 13:07:47

+0

我也剛剛發現你可以使用status ['q_shift'] = status ['questions'] .diff()'。 [pandas.DataFrame.diff](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.diff.html)。 – rocarvaj 2016-03-28 12:00:12