Python 删除while循环中dataframe中的最后一列
我正在比较两个数据帧,这两个数据帧包含一个月内的所有天<代码>预测和验证Python 删除while循环中dataframe中的最后一列,python,pandas,indexing,Python,Pandas,Indexing,我正在比较两个数据帧,这两个数据帧包含一个月内的所有天预测和验证 print(prediction) day 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31 balance 1228.939 1140.939 1085.35 885.
print(prediction)
day 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31
balance 1228.939 1140.939 1085.35 885.35 883.373 819.922 813.449 ... 1190.251818 1185.706364 1162.979091 1190.251818 1247.277 1247.277 647.17
validation
但是,根据观察月份的不同,可能包含28天、30天或31天,而predicition
是静态的,始终包含31天。
这是一个验证的示例,其中包含28行
balance flag day month year fdate
date
2019-02-01 2957.23 8 1 2 2019 201902
2019-02-02 2909.23 8 2 2 2019 201902
2019-02-03 2909.23 8 3 2 2019 201902
2019-02-04 2909.23 8 4 2 2019 201902
2019-02-05 2909.23 8 5 2 2019 201902
2019-02-06 2909.23 8 6 2 2019 201902
2019-02-07 2909.23 8 7 2 2019 201902
2019-02-08 2909.23 8 8 2 2019 201902
2019-02-09 2909.23 8 9 2 2019 201902
2019-02-10 2909.23 8 10 2 2019 201902
2019-02-11 2909.23 8 11 2 2019 201902
2019-02-12 2909.23 8 12 2 2019 201902
2019-02-13 2909.23 8 13 2 2019 201902
2019-02-14 2909.23 8 14 2 2019 201902
2019-02-15 2909.23 8 15 2 2019 201902
2019-02-16 2909.23 8 16 2 2019 201902
2019-02-17 2909.23 8 17 2 2019 201902
2019-02-18 2909.23 8 18 2 2019 201902
2019-02-19 2909.23 8 19 2 2019 201902
2019-02-20 3045.50 8 20 2 2019 201902
2019-02-21 3045.50 8 21 2 2019 201902
2019-02-22 3014.98 8 22 2 2019 201902
2019-02-23 3014.98 8 23 2 2019 201902
2019-02-24 3014.98 8 24 2 2019 201902
2019-02-25 3014.98 8 25 2 2019 201902
2019-02-26 3014.98 8 26 2 2019 201902
2019-02-27 3014.98 8 27 2 2019 201902
2019-02-28 3014.98 8 28 2 2019 201902
我正在尝试创建一个while循环,它将删除预测的最后一列,直到验证的行数与预测的列数匹配为止。通过这种方式,我可以将预测
转置,并将其附加到验证
中,然后我可以计算相关性或任何其他拟合优度度量。
这是删除预测的最后一列直到满足条件的正确方法吗
while len(prediction.columns) > len(list(validation['balance'])):
prediction = prediction.drop(prediction.columns[len(prediction.columns)-1], axis=1, inplace=True)
然后连接两个数据帧后,最终输出为:
balance flag day month year fdate bal_pred
date
2019-02-01 2957.23 8 1 2 2019 201902 1228.939
2019-02-02 2909.23 8 2 2 2019 201902 1140.939
2019-02-03 2909.23 8 3 2 2019 201902 1085.35
2019-02-04 2909.23 8 4 2 2019 201902 885.35
2019-02-05 2909.23 8 5 2 2019 201902 883.373
2019-02-06 2909.23 8 6 2 2019 201902 819.922
2019-02-07 2909.23 8 7 2 2019 201902 813.449
2019-02-08 2909.23 8 8 2 2019 201902 ...
2019-02-09 2909.23 8 9 2 2019 201902 ...
2019-02-10 2909.23 8 10 2 2019 201902 ...
2019-02-11 2909.23 8 11 2 2019 201902 ...
2019-02-12 2909.23 8 12 2 2019 201902 ...
2019-02-13 2909.23 8 13 2 2019 201902 ...
2019-02-14 2909.23 8 14 2 2019 201902 ...
2019-02-15 2909.23 8 15 2 2019 201902 ...
2019-02-16 2909.23 8 16 2 2019 201902 ...
2019-02-17 2909.23 8 17 2 2019 201902 ...
2019-02-18 2909.23 8 18 2 2019 201902 ...
2019-02-19 2909.23 8 19 2 2019 201902 ...
2019-02-20 3045.50 8 20 2 2019 201902 ...
2019-02-21 3045.50 8 21 2 2019 201902 ...
2019-02-22 3014.98 8 22 2 2019 201902 ...
2019-02-23 3014.98 8 23 2 2019 201902 ...
2019-02-24 3014.98 8 24 2 2019 201902 ...
2019-02-25 3014.98 8 25 2 2019 201902 1190.25
2019-02-26 3014.98 8 26 2 2019 201902 1185.71
2019-02-27 3014.98 8 27 2 2019 201902 1162.98
2019-02-28 3014.98 8 28 2 2019 201902 1190.25
谢谢。在熊猫身上做到这一点的正确方法是:
prediction = prediction.iloc[:, :len(validation)]
在熊猫身上做到这一点的正确方法是:
prediction = prediction.iloc[:, :len(validation)]
使用:
或者一步到位:
validation['prediction']=prediction.T.iloc[0:len(validation)]['balance']
使用:
或者一步到位:
validation['prediction']=prediction.T.iloc[0:len(validation)]['balance']
太棒了,谢谢。这一步没有直接起作用,我最终在转置的基础上创建了一个新的数据帧,然后加入其中。太棒了,谢谢。这一步没有直接起作用,我在转置后创建了一个新的数据帧,然后加入它。