按日期将数据框拆分为两个。

10
我有一个包含1000行的数据集,格式如下:
 Date,      Cost,         Quantity(in ton),    Source,          Unloading Station
    01/10/2015, 7,            5.416,               XYZ,           ABC

我希望按照日期拆分数据。例如,到2016年12月20日为止是训练数据,之后是测试数据。

如何进行拆分?是否可行?


简单的循环就足够了。 - lejlot
是的,可以用这种方式拆分数据。是否这样做是有上下文的;你的意图似乎已经是要这样拆分了。我不清楚你期望什么类型的答案。你能澄清一下问题吗? - roganjosh
@roganjosh,有一个数据集,包含以上标签(日期、成本、数量、来源、目的地)。现在给定一个特定的日期(例如2016年1月10日),在这个日期之前的数据将作为训练数据集,之后的数据将作为测试数据集。在某个特定的日期,有大量的数量从源头发送到目的地。就像这样,日期是连续的,例如从2015年1月1日到2016年1月1日。 - kush
你的数据集是什么类型?它是一个 Pandas 数据框吗? - MaxU - stand with Ukraine
@kush 但是这依然不是一个问题,而只是一种陈述。你的数据是如何读入Python的?“我应该如何拆分?”是不可能回答的。“是否可能?”-几乎肯定是“是”。你需要在问题中澄清你想要做什么,并最好发布那些未奏效的尝试。 - roganjosh
我正在使用Pandas数据框,根据日期将其轻松拆分为不同的集合。 - kush
3个回答

18
你可以通过将列转换为 pandas 的 to_datetime 类型并将其设置为索引来轻松完成。
import pandas as pd
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index(df['Date'])
df = df.sort_index()

一旦您的数据按此格式排列,您可以使用日期作为索引来创建分区,具体操作如下:

# create train test partition
train = df['2015-01-10':'2016-12-20']
test  = df['2016-12-21':]
print('Train Dataset:',train.shape)
print('Test Dataset:',test.shape)

我遇到了类似的问题,但我的日期已经是一个索引,只是我有不同的ID具有相同的间隔。如何拆分它? - Ben10
请问您能否提供一个样本数据集? - Sayali Sonawane
df.sort_index() 是必要的吗? - Nermin

12
假设您的数据集是Pandas数据框,并且“Date”列的数据类型为“datetime”:
假设您的数据集是Pandas数据框,并且“Date”列的数据类型为“datetime”:
split_date = pd.datetime(2016,12,20)

df_training = df.loc[df['Date'] <= split_date]
df_test = df.loc[df['Date'] > split_date]

1
如果您的日期是标准的Python datetime格式,即“2016-06-23 23:00:00”,则可以使用以下代码: split_date ='2016-06-23 23:00:00' train_data = train_data.loc[train_data['Date'] <= split_date] validation_data = train_data.loc[train_data['Date'] > split_date]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接