微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将特定行移动到另一个数据帧

如何解决将特定行移动到另一个数据帧

我有这个数据框。

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?