【问题标题】:Day number to Date迄今为止的天数
【发布时间】:2020-04-10 14:22:34
【问题描述】:

我有一年中的某一天(例如 295)。我想将其转换为等效的 10 月 22 日。 我有这个多年,所以每次例程应该在达到 365 或 366 时更新年份。 是否有任何内置功能?

【问题讨论】:

  • 这能回答你的问题吗? Python Question: Year and Day of Year to date?
  • @blacksite 它适用于第一部分。知道如何更新年份吗?
  • 应该是自动的pd.to_datetime('2000-01-01') + df.to_timedelta(df['day'], unit='D'),记得把2000-01-01换成你的开始年份。
  • @QuangHoang 感谢您的帮助,但年份仍未更新。

标签: python-3.x pandas


【解决方案1】:

我不知道你为什么在评论中提到年份不更新:

s = pd.Series([1,20,56,290,356,3,5,7,100])
start_year = 2000

# calculate the years
years = s.diff().lt(0).cumsum()+start_year

# final output
pd.to_datetime(years, format='%Y') + pd.to_timedelta(s-1, unit='D')

输出:

0   2000-01-01
1   2000-01-20
2   2000-02-25
3   2000-10-16
4   2000-12-21
5   2001-01-03
6   2001-01-05
7   2001-01-07
8   2001-04-10
dtype: datetime64[ns]

【讨论】:

  • 我的数据框列是 [1,20,56,290,356,3,5,7,100]
【解决方案2】:

我想这就是你要找的东西:

import datetime
x = datetime.datetime.strptime('2019 110', '%Y %j')
x.strftime('%B %d')

'April 30'

【讨论】:

  • 谢谢,但这是一年。我有一个数据框列,其中按顺序排列了多年的天数。所以我正在寻找一些东西来升级一年,一旦它达到 365/366
  • 你不能把它应用到所有的列?您可以为此使用 lambda 函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多