如何根据使用Pandas的实际日期来计算一年中的天数?

2024-04-19 05:09:09 发布

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

我的数据帧data有一个日期变量dateOpen,格式如下date_format = "%Y-%m-%d %H:%M:%S.%f",我希望有一个名为openDay的新列,它是基于一年365天的日数。我试着应用以下

data['dateOpen'] = [datetime.strptime(dt, date_format) for dt in data['dateOpen']]
data['openDay'] = [dt.day for dt in data['dateOpen']]

然而,我得到了一个月中的一天。例如,如果日期是2013-02-21 10:12:14.3,那么上面的公式将返回21。但是,我希望它返回52,从1月31日起加上2月21日。

在熊猫身上有简单的方法吗?


Tags: 数据informatfordatadatetimedate格式
2条回答

不确定是否有内置的pandas,但是在Python中,您可以获得“Julian”日,例如:

data['openDay'] = [int(format(dt, '%j')) for dt in data['dateOpen']]

示例:

>>> from datetime import datetime
>>> int(format(datetime(2013,2,21), '%j'))
52

在最新的熊猫上,您可以使用date-time properties

>>> ts = pd.Series(pd.to_datetime(['2013-02-21 10:12:14.3']))
>>> ts
0   2013-02-21 10:12:14.300000
dtype: datetime64[ns]
>>> ts.dt.dayofyear
0    52
dtype: int64

在旧版本中,您可以将转换为DatetimeIndex,然后使用.dayofyear属性:

>>> pd.Index(ts).dayofyear  # may work
array([52], dtype=int32)

相关问题 更多 >