我正在尝试根据日期将数据框拆分为两个。这已解决了相关问题: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
答案 0 :(得分: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
答案 1 :(得分: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 :(得分:0)
这是一个解决方案: 添加标签&#34;日期&#34;到第一列的数据文件。
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]
双方必须属于同一类型。