【问题标题】:Python cannot split dataframe timestamp errorPython 无法拆分数据帧时间戳错误
【发布时间】:2020-03-07 23:27:16
【问题描述】:

我有这样的数据框。

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')

如何拆分数据框?

【问题讨论】:

    标签: python python-3.x pandas timestamp


    【解决方案1】:

    我认为您首先需要 DatetimeIndex 加入 YEAR_ 和 MONTH_ 列:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2020-12-12
      • 2020-09-20
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多