【问题标题】:Creating a year-week column from distinct year and week columns in pandas dataframe从 pandas 数据框中的不同年份和周列创建年周列
【发布时间】:2021-01-20 15:26:45
【问题描述】:

我想在一个数据框上执行时间序列分析。数据框包含不同的年份和星期列:

Year Week stateID values
2018  2     231     55
2010  3     231     92
2000  5     231     56
2018  2     321     55
2010  3     321     45

为了进行分析,我想将年周列连接到具有年-周格式的日期时间对象。即:

Year-Week stateID values
2018-2     231     55
2010-3     231     92
2000-5     231     56
2018-2     321     55
2010-3     321     45

如何在 pandas 中实现它?

【问题讨论】:

    标签: pandas dataframe datetime time-series


    【解决方案1】:

    IIUC,

    df['Year-Week'] = df['Year'].astype(str) + '-' + df['Week'].astype(str)
    
    df['Period'] = pd.to_datetime(df['Year'].astype(str) + '-' + df['Week'].astype(str) + '-' +'0', format='%Y-%W-%w').dt.to_period('W')
    

    输出:

       Year  Week  stateID  values Year-Week                 Period
    0  2018     2      231      55    2018-2  2018-01-08/2018-01-14
    1  2010     3      231      92    2010-3  2010-01-18/2010-01-24
    2  2000     5      231      56    2000-5  2000-01-31/2000-02-06
    3  2018     2      321      55    2018-2  2018-01-08/2018-01-14
    4  2010     3      321      45    2010-3  2010-01-18/2010-01-24
    

    【讨论】:

    • 您好,请问“dt.to_period('M')”的用法?
    • @EishaTirRaazia 好吧,我创建了一个 dtype Period 来表示一个月的周期范围。 dt 是使用特殊日期时间方法(例如 to_period)的日期时间访问器。请参阅文档 pandas.pydata.org/pandas-docs/stable/user_guide/… 中的此部分
    • 在这个数据集中,我只有周数据,即:第 1-52 周,以及年份与周数。你的方法还能正常工作吗?
    • 数据框中的星期基本上是指“一年中的一周”
    • 另外,当我使用 %y-%W 时,它会显示 {Cannot use '%W' or '%U' without day and year}
    【解决方案2】:

    这样的事情应该可以工作:

    df["Year-Week"] = df.Year.astype(str).str.cat(df.Week.astype(str), sep="-")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多