【问题标题】:How to split a date index into separate day , month ,year column in pandas如何在熊猫中将日期索引拆分为单独的日、月、年列
【发布时间】:2021-10-11 00:54:51
【问题描述】:

我有数据集df1:

df1

我之前做了一个列和索引转置:

df1 = df.T

数据集 df 之前看起来像这样:

df

我已经使用.to_datetime 函数来转换我的日期:

df1.index = pd.to_datetime(df1.index).strftime('%Y-%m')

如何拆分日期索引并将它们添加到表格右侧的新“年”和“月”列?

我试过了:

df1['month'] = df.index.month
df1['year'] = df.index.year

但是,它返回给我以下错误:

AttributeError: 'Index' 对象没有属性 'day'

这实际上是对here之前提出的另一个问题的跟进

由于我是新帐户持有人,因此无法在此处添加评论。

谢谢大家,我是新手,请多多包涵。

【问题讨论】:

  • 分割是什么意思?你想要的输出是什么样的?
  • 当我调用df.columns 时,我无法理解 'Variables' 实际上是索引名称是什么意思?这只是索引。无需提及转置来混淆我们。
  • @mephisto:从 OP 的原始问题以及他们在上面写的内容中,他们想要从(日期时间)索引中提取单独的年、月和日列,所以他们可以pd.concat他们进入一些新的数据框。
  • @smci 嗨,是的,你是对的。我想在表格右侧创建“年”和“月”列,以便我可以相应地对它们进行分组

标签: python pandas


【解决方案1】:

如果您的日期是索引,那么您的代码应该可以工作。但是,如果日期在日期列中,请尝试:

df['day'] = df.date.dt.day
df['month'] = df.date.dt.month
df['year'] = df.date.dt.year

【讨论】:

  • 感谢您的回复。我也试过了,结果出现了这个错误: AttributeError: 'DataFrame' object has no attribute 'date' :(
  • 那么您没有日期列。您可以先创建一个列:df['date'] = df.index 然后您可以尝试我在答案中给出的代码
  • 我想我明白了!哇,我被困在这几个小时了。我想我现在可以继续前进了。非常感谢!!!
【解决方案2】:

试试这个

df.index = pd.to_datetime(df.index)
df['day'] = df.index.day
df['month'] = df.index.month
df['year'] = df.index.year

【讨论】:

    【解决方案3】:
    import calendar as cal
    import locale
    
    df.Dates = pd.to_datetime(df.Dates)
    
    df['Year'] = df.Dates.dt.year
    df['Month'] = df.Dates.dt.month_name()
    df['Day'] = df.Dates.dt.day
    

    【讨论】:

      【解决方案4】:

      试试这个:

          df['time'] = pd.to_datetime(df['time'])
          df['Which Day'] = df['time'].dt.day_name()
          df['Year'] = df['time'].dt.year
          df['Month'] = df['time'].dt.month_name())
      

      【讨论】:

      • 如果您可以添加指向文档的链接,这对于将来找到此答案的任何人来说都是一个更有用的答案:)
      猜你喜欢
      • 2019-09-10
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2016-02-20
      • 2011-09-26
      相关资源
      最近更新 更多