Python无法分割数据帧时间戳

2022-05-21 07:39:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据帧

YEAR_   MONTH_  
2010    3      
2010    4      
2010    5      
2012    6      
2012    7      
2013    8      
2014    9      
2014    10  

我这样读数据帧

df2 = pd.read_csv('D://Thesis//rolling_sum_6_month.csv', engine='python')
#df2['DATE_'] = pd.to_datetime(df2['DATE_']) + MonthEnd(1)
df2 = df2.set_index('MONTH_')
df2.head()

我像这样分割数据

split_date = pd.Timestamp('08-2013')
test = df2.loc[split_date:, ['id001']]

它显示了这样的错误

KeyError: Timestamp('2013-08-01 00:00:00')

如何拆分数据帧


Tags: csv数据readdateyeartimestamppdsplitsumdf2rolling读数据monththesis
1条回答
网友
1楼 ·

我认为您首先需要通过连接YEAR_MONTH_列来使用DatetimeIndex

df2.index = pd.to_datetime(df2['YEAR_'].astype(str) + ' ' +
                           df2['MONTH_'].astype(str)) 
print (df2)
            YEAR_  MONTH_
2010-03-01   2010       3
2010-04-01   2010       4
2010-05-01   2010       5
2012-06-01   2012       6
2012-07-01   2012       7
2013-08-01   2013       8
2014-09-01   2014       9
2014-10-01   2014      10

split_date = pd.Timestamp('08-2013')
print (split_date)
2013-08-01 00:00:00

print (df2.loc[split_date:])
            YEAR_  MONTH_
2013-08-01   2013       8
2014-09-01   2014       9
2014-10-01   2014      10

另一种解决方案是在read_csv中创建DatatimeIndex

import pandas as pd
from io import StringIO

temp="""YEAR_,MONTH_,id1
2010,3,1
2010,4,5
2010,5,8
2012,6,9
2012,7,8
2013,8,8
2014,9,7
2014,10,5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'D://Thesis//rolling_sum_6_month.csv'
df2 = pd.read_csv(StringIO(temp), index_col=['YEAR__MONTH_'], parse_dates=[['YEAR_','MONTH_']])
print (df2)
              id1
YEAR__MONTH_     
2010-03-01      1
2010-04-01      5
2010-05-01      8
2012-06-01      9
2012-07-01      8
2013-08-01      8
2014-09-01      7
2014-10-01      5