如果我问了一个非常基本的问题,我道歉。我想在python中复制一个简单的滚动矩阵,但是我很挣扎,我想知道我是否可以得到一些帮助。
老化(已导入DF)
<表类>
月
NYD
DPD30
DPD60
DPD90
DPD120
DPD150
损失
tbody><<tr>1月 1000 500 400 300 200 100 50 2月1200 400 350 250 150 180 30 3 900 890 250 200 180 120 100 4月2100 600 650 190 125 150 80 51800 1200 400 450 125 80 90 6月1500 900 800 257 325 90 75 表类>
import pandas as pd
df=pd.read_excel(r"D:Stack_overflow/test1.xlsx")
#TAKING OUT ALL THE COLUMNS WITH HAVING INT TYPE
cols=df.select_dtypes(exclude=['object']).columns
cols=cols.to_list()
#CREATING ANOTHER LIST WITH _tmp ADDED TO THE LIST ELEMNETS
cols2=[x + '_tmp' for x in cols]
cols2=cols2+['tmp']
cols=cols+['tmp']
print(cols2)
#ADDING TMP COLUMN TO DF
df['tmp']=0
df['Month']=df['Month'].shift(-1)
#RUNNING OUT THE LOOP FOR EVERY EELEMENT STARTING FROM THE DPD30 (ELEMENT 2nd of cols)
for i in range(len(cols)-1):
df[cols[i]]=((df[cols[i+1]].shift(-1))/df[cols[i]])*100
print(df.head())
Month NYD DPD30 DPD60 ... DPD120 DPD150 Loss tmp
0 Feb 40.000000 70.000000 62.500000 ... 90.000000 30.000000 0.0 0
1 Mar 74.166667 62.500000 57.142857 ... 80.000000 55.555556 0.0 0
2 Apr 66.666667 73.033708 76.000000 ... 83.333333 66.666667 0.0 0
3 May 57.142857 66.666667 69.230769 ... 64.000000 60.000000 0.0 0
4 June 50.000000 66.666667 64.250000 ... 72.000000 93.750000 0.0 0
如果不需要,或者在以后的代码中出现错误,可以删除tmp列。
希望这能解决问题。