Iva*_*sky 2 python filtering pandas
目前,我正在研究这种数据集:
date income account flag day month year
0 2018-04-13 470.57 1000 0002 8 13 4 2018
1 2018-04-14 375.54 1000 0002 8 14 4 2018
2 2018-05-15 375.54 1000 0002 8 15 5 2018
3 2018-05-16 229.04 1000 0002 7 16 5 2018
4 2018-06-17 216.62 1000 0002 7 17 6 2018
5 2018-06-18 161.61 1000 0002 6 18 6 2018
6 2018-04-19 131.87 0000 0001 6 19 4 2018
7 2018-04-20 100.57 0000 0001 6 20 4 2018
8 2018-08-21 100.57 0000 0001 6 21 8 2018
9 2018-08-22 50.57 0000 0001 5 22 8 2018
Run Code Online (Sandbox Code Playgroud)
我正在研究DecisionTree回归模型,该模型将RandomForest与ExtraTrees进行比较,并调整其一些超参数。我目前正在尝试做的是拆分数据集,以便将具有month唯一值的列的最大值的行保留account为test_set,将其他值保留为索引(如果更方便的话,也可以将其设置为index)。动车组。基本上,这意味着将使用所有可用的历史数据进行回归,但属于上一个可用月份的数据将用于验证MSE。
我知道如何根据静态条件(例如)过滤数据框,df[df['month'] < 12]但在这种情况下,我需要保持属于最大月份的所有行可用于每个不同的account值。
从以前的数据集中,我应该能够得到以下信息:df_test =
date income account flag day month year
4 2018-06-17 216.62 1000 0002 7 17 6 2018
5 2018-06-18 161.61 1000 0002 6 18 6 2018
8 2018-08-21 100.57 0000 0001 6 21 8 2018
9 2018-08-22 50.57 0000 0001 5 22 8 2018
Run Code Online (Sandbox Code Playgroud)
和 df_train =
date income account flag day month year
0 2018-04-13 470.57 1000 0002 8 13 4 2018
1 2018-04-14 375.54 1000 0002 8 14 4 2018
2 2018-05-15 375.54 1000 0002 8 15 5 2018
3 2018-05-16 229.04 1000 0002 7 16 5 2018
6 2018-04-19 131.87 0000 0001 6 19 4 2018
7 2018-04-20 100.57 0000 0001 6 20 4 2018
Run Code Online (Sandbox Code Playgroud)
因此,例如,df['account'] = 1000 0002我可以使用第4个月和第5个月进行预测,并使用第6个月进行验证。谢谢!
你可以做 transform
test=df[df.month==df.groupby('account').month.transform('max')].copy()
train=df.drop(test.index)
test
Out[643]:
date income account flag day month year
4 2018-06-17 216.62 10000002 7 17 6 2018
5 2018-06-18 161.61 10000002 6 18 6 2018
8 2018-08-21 100.57 1 6 21 8 2018
9 2018-08-22 50.57 1 5 22 8 2018
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |