Python pandas 从日期时间数组生成月份的第一天
Python pandas generating first day of month from array of datetime
我正在尝试从日期时间数组中获取月份的第一天,即将所有日期更改为 1
,将所有时间更改为 0
:
import pandas as pd
z1 = [datetime(2025, 10, 1, 3, 0),datetime(2025, 1, 6, 7, 0)]
pd.DatetimeIndex(z1).normalize()
DatetimeIndex(['2025-10-01', '2025-01-06'], dtype='datetime64[ns]', freq=None)
我希望实现
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
您可以先从 z1
创建 Series
,然后 replace
day
并转换为 date
:
print (pd.DatetimeIndex(pd.Series(z1).apply(lambda x: x.replace(day=1)).dt.date))
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
另一个解决方案是转换 day
和 hour
:
print (pd.DatetimeIndex(pd.Series(z1).map(lambda x: x.replace(day=1, hour=0))))
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
另一种方法是形成 dtype datetime64[M]
的 NumPy 数组(具有每月分辨率的 datetime64)
In [31]: np.array(z1, dtype='datetime64[M]')
Out[31]: array(['2025-10', '2025-01'], dtype='datetime64[M]')
传递给 pd.DatetimeIndex
returns
In [32]: pd.DatetimeIndex(np.array(z1, dtype='datetime64[M]'))
Out[32]: DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
使用 date_range
并设置 freq = 'MS'
。 'MS'
的意思可以从下面解读
一行代码:
date_series = pd.date_range(start='1/1/2017', end ='12/1/2019', freq='MS')
我正在尝试从日期时间数组中获取月份的第一天,即将所有日期更改为 1
,将所有时间更改为 0
:
import pandas as pd
z1 = [datetime(2025, 10, 1, 3, 0),datetime(2025, 1, 6, 7, 0)]
pd.DatetimeIndex(z1).normalize()
DatetimeIndex(['2025-10-01', '2025-01-06'], dtype='datetime64[ns]', freq=None)
我希望实现
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
您可以先从 z1
创建 Series
,然后 replace
day
并转换为 date
:
print (pd.DatetimeIndex(pd.Series(z1).apply(lambda x: x.replace(day=1)).dt.date))
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
另一个解决方案是转换 day
和 hour
:
print (pd.DatetimeIndex(pd.Series(z1).map(lambda x: x.replace(day=1, hour=0))))
DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
另一种方法是形成 dtype datetime64[M]
的 NumPy 数组(具有每月分辨率的 datetime64)
In [31]: np.array(z1, dtype='datetime64[M]')
Out[31]: array(['2025-10', '2025-01'], dtype='datetime64[M]')
传递给 pd.DatetimeIndex
returns
In [32]: pd.DatetimeIndex(np.array(z1, dtype='datetime64[M]'))
Out[32]: DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)
使用 date_range
并设置 freq = 'MS'
。 'MS'
的意思可以从下面解读
一行代码:
date_series = pd.date_range(start='1/1/2017', end ='12/1/2019', freq='MS')