抱歉,如果我问的是一个非常基本的问题。我想在 python 中复制一个简单的滚动矩阵,但是我很挣扎,我想知道是否可以得到一些帮助。
老化(已作为 DF 导入)
月 | 纽约时间 | DPD30 | DPD60 | DPD90 | DPD120 | DPD150 | 损失 |
---|---|---|---|---|---|---|---|
一月 | 1000 | 500 | 400 | 300 | 200 | 100 | 50 |
二月 | 1200 | 400 | 350 | 250 | 150 | 180 | 30 |
三月 | 900 | 890 | 250 | 200 | 180 | 120 | 100 |
四月 | 2100 | 600 | 650 | 190 | 125 | 150 | 80 |
五月 | 1800 | 1200 | 400 | 450 | 125 | 80 | 90 |
六月 | 1500 | 900 | 800 | 257 | 325 | 90 | 75 |
流量矩阵
月 | 纽约时间 | DPD30 | DPD60 | DPD90 | DPD120 | DPD150 |
---|---|---|---|---|---|---|
二月 | 40% | 70% | 63% | 50% | 90% | 30% |
三月 | 74% | 63% | 57% | 72% | 80% | 56% |
四月 | 67% | 73% | 76% | 63% | 83% | 67% |
五月 | 57% | 67% | 69% | 66% | 64% | 60% |
六月 | 50% | 67% | 64% | 72% | 72% | 94% |
你可以从上面的例子中看到,我从老化表中创建了一个流量矩阵。例如,2 月份的 40% 的计算方法是将 DPD30 中的 400 除以 NYD 1 月份的 1000 (400/1000)(即 1000 中的 400 在下个月移入下一个桶)。
如果有人能指导我如何在 python 中重新创建它,我将不胜感激。我已经将 CSV 老化文件作为 df 导入,但是我不确定如何操作 df 中的数据来为流量矩阵创建新的 df。
非常感谢您的帮助
答案 0 :(得分:0)
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 列,或者在进一步的代码中给出任何错误。
希望能解决问题。