根据日期拆分数据框

Posted

技术标签:

【中文标题】根据日期拆分数据框【英文标题】:Split dataframe on the basis of date 【发布时间】:2018-02-24 03:10:14 【问题描述】:

我正在尝试根据日期将数据框拆分为两个。这已经解决了这里的一个相关问题:Split dataframe into two on the basis of date

我的数据框如下所示:

               abcde     col_b
2008-04-10  0.041913  0.227050
2008-04-11  0.041372  0.228116
2008-04-12  0.040835  0.229199
2008-04-13  0.040300  0.230301
2008-04-14  0.039770  0.231421

如何根据日期(例如 2008-04-12 之前及之后)拆分它?当我尝试这个时:

df.loc[pd.to_datetime(df.index) <= split_date]

split_datedatetime.date(2008-04-12),我收到此错误:

*** TypeError: <class 'datetime.date'> type object 2008-04-12

【问题讨论】:

【参考方案1】:

作为参考,如果您希望获取两个日期之间的数据框,您可以按照@R.A.Munna 的逻辑执行此操作:

import datetime

split_date_one = datetime.date(2019,9,26)
split_date_two = datetime.date(2019,10,13)

df= df[(pd.to_datetime(df[df.columns[0]]) >= split_date_one) & (pd.to_datetime(df[df.columns[0]]) <= split_date_two)]

【讨论】:

【参考方案2】:

来自您的代码

其中 split_date 是 datetime.date(2008-04-12),我收到此错误

这里datetime.date() 将参数作为格式2008,4,12 for more。所以你应该写

split_date = datetime.date(2008,4,12)

当您对输入进行采样时,第一列没有名称,因此您可以像这样访问第一列

df[(pd.to_datetime(df[df.columns[0]]) < split_date)]

否则,您将列名称指定为 "date" 或任何您想要的名称

df[(pd.to_datetime(df["date"]) < split_date)]

最后

TypeError: &lt;class 'datetime.date'&gt; type object 2008-04-12

这种情况基本上发生了你试试这个datetime objectdf的系列

for more

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 一些解释会很好。 (@Lundin 和 @Sergio),感谢您的好建议,我会记住所有后续方法。 这有效但抛出:“FutureWarning:比较日期时间系列与'datetime.date'。目前,'datetime.date'被强制转换为日期时间。未来熊猫不会强制,并且将引发 TypeError。要保留当前行为,请将 'datetime.date' 转换为带有 'pd.Timestamp' 的日期时间。split_date = datetime.date(2008,4,12)"【参考方案3】:

这里有一个解决方案: 将标签“日期”添加到第一列的数据文件中。

import pandas as pd
df = pd.read_csv('data.csv')

split_date ='2008-04-12'
df_training = df.loc[df['Date'] <= split_date]
df_test = df.loc[df['Date'] > split_date]
print df_test

当您进行比较时,例如

df.loc[pd.to_datetime(df.index) <= split_date]

两边必须是同一类型。

【讨论】:

以上是关于根据日期拆分数据框的主要内容,如果未能解决你的问题,请参考以下文章

根据日期将数据框拆分为两个

Spark Regexp:根据日期拆分列

熊猫如何按间隔按列拆分数据帧

熊猫如何按间隔按列拆分数据帧

按组将数据框日期拆分为单个最小最大日期范围

根据现有数据框中的 WeekDays 拆分并创建新数据框