如何解决将特定行移动到另一个数据帧
我有这个数据框。
df = pd.DataFrame({'date': np.array(['2021-04-11','2021-04-12','2021-04-13','2021-04-14','2021-04-15','2021-04-16','2021-04-17','2021-04-18','2021-04-19','2021-04-20','2021-04-21','2021-04-22','2021-04-23','2021-04-24','2021-04-25','2021-04-26','2021-04-27','2021-04-28','2021-04-29','2021-04-30','2021-05-01','2021-05-02','2021-05-03','2021-05-04','2021-05-05','2021-05-06','2021-05-07']),'value': np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27])})
我想把它分成 3 个部分(训练、验证和测试)。
例如:
split=0.7 # split perc
last=7 # keep 7 last days for test data
split_idx = int(df.shape[0] * split)
train_df = df[:split_idx]
val_df = df[split_idx:-last]
test_df = df[(train_df.shape[0] + val_df.shape[0]):]
所以,现在我有:
len(train_df),len(val_df),len(test_df) = 18,7
我希望长度可以被 7 整除,所以:
if len(train_df) % 7 != 0:
# move those rows to the beginning of val_df
val_df.loc[0] =
# drop those rows from train_df
train_df.drop(train_df.tail(len(train_df) % 7).index,inplace=True)
如果 train_df 的 len 不能被 7 整除,那么我想将最后一行数据移动到 val_df 数据的开头,然后从 train_df 中删除它们。这同样适用于 val_df。 test_df 总是至少有 7 个值,所以如果它更大,我会删除它们。
解决方法
所以,我找到了答案!
if len(train_df) % 7 != 0:
# move those rows to the beginning of val_df
rows = train_df.tail(len(train_df) % 7)
val_df = pd.concat([val_df.iloc[:len(val_df)],rows,val_df.iloc[len(val_df):]]).sort_index()
# drop those rows from train_df
train_df.drop(train_df.tail(len(train_df) % 7).index[0:],inplace=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。