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']

太棒了,谢谢。这一步没有直接起作用,我最终在转置的基础上创建了一个新的数据帧,然后加入其中。太棒了,谢谢。这一步没有直接起作用,我在转置后创建了一个新的数据帧,然后加入它。