根据日期拆分数据框
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_date
是 datetime.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: <class 'datetime.date'> type object 2008-04-12
这种情况基本上发生了你试试这个datetime object
到df
的系列
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]
两边必须是同一类型。
【讨论】:
以上是关于根据日期拆分数据框的主要内容,如果未能解决你的问题,请参考以下文章