我想知道如何从以下数据框架的第一个和最后一个值中从列余额,导出和导入的列获得pct_change?另外,如果您可以说明如何从两个特定日期获得pct_change
balance date exports imports
0 -45053 2008-01-01 421443 466496
1 -33453 2009-01-01 399649 433102
2 -41168 2010-01-01 445748 486916
3 -25171 2011-01-01 498862 524033
4 -33364 2012-01-01 501055 534419
5 -35367 2013-01-01 519913 555280
6 -36831 2014-01-01 518925 555756
7 -32370 2015-01-01 517161 549531
8 -43013 2016-01-01 547473 590486
iiuic,使用 iloc
进行第一个.iloc[0]
,最后.iloc[-1]
获取PCT_CHANGE 100*(last/first-1)
In [244]: cols = ['balance', 'exports', 'imports']
In [245]: 100*(df[cols].iloc[-1]/df[cols].iloc[0]-1)
Out[245]:
balance -4.528000
exports 29.904400
imports 26.579006
dtype: float64
首先,如果要直接使用日期,则必须将索引设置为日期。然后一切都很容易进行。
import pandas as pd
data = [[-45053, "2008-01-01", 421443, 466496],
[-33453, "2009-01-01", 399649, 433102],
[-41168, "2010-01-01", 445748, 486916],
[-25171, "2011-01-01", 498862, 524033],
[-33364, "2012-01-01", 501055, 534419],
[-35367, "2013-01-01", 519913, 555280],
[-36831, "2014-01-01", 518925, 555756],
[-32370, "2015-01-01", 517161, 549531],
[-43013, "2016-01-01", 547473, 590486]]
columns = ["balance","date","exports","imports"]
df=pd.DataFrame(data,columns=columns).set_index("date")
print(df.loc["2009-01-01"]/df.loc["2008-01-01"]-1)
# result
# balance -0.257475
# exports -0.051713
# imports -0.071585
# dtype: float64