Python pandas从datetime数组生成第一天的第一天

时间:2016-07-17 12:55:56

标签: python datetime pandas replace datetimeindex

我正在尝试从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)

3 个答案:

答案 0 :(得分:4)

另一种方法是形成一个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返回

In [32]: pd.DatetimeIndex(np.array(z1, dtype='datetime64[M]'))
Out[32]: DatetimeIndex(['2025-10-01', '2025-01-01'], dtype='datetime64[ns]', freq=None)

答案 1 :(得分:2)

您可以先从WpfControlLibrary1::UserControl1 ^uc = gcnew UserControl1(); 创建Series,然后z1 replace并转换为date

day

另一种解决方案是转换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

答案 2 :(得分:1)

使用date_range并设置freq = 'MS''MS'的含义可以从下面解释

enter image description here

一行代码:

date_series = pd.date_range(start='1/1/2017', end ='12/1/2019', freq='MS')