簡體   English   中英

如何更改日期時間格式的日期中的年份和月份?

[英]How to change year and month in a date which is in datetime format?

我有一個帶有日期時間格式列的 Python dataframe(8000 行),其日期類似於 YYYY-MM-DD。 我希望將它從單一日期更改為同一天的多個月份和年份。

我的 Output:

0  data-1  2011-12-03
1  data-2  2011-12-03
2  data-3  2011-12-03
..
..
   data-4  2011-12-03
   data-5  2011-12-03
7999  data-6  2011-12-03

預計 output:

     val1        date
0  data-1  2009-01-03
..         2009-02-03
           2009-03-03
           ..
           ..
           2009-11-03
           2009-12-03
11  data-n 2010-01-03
..         2010-02-03
           2010-03-03
           ..
           ..
           2010-11-03
           2010-12-03
           2011-01-03
..         2011-02-03
           2011-03-03
           ..
           ..
           2011-11-03
7999  data-m  2011-12-03

我希望它在 12 個月和 5 年內傳播。 我試過了:

df.date[0:999] = pd.to_datetime(stallion_df.date[0:999]) + pd.offsets.DateOffset(years=1)
df.date[0:999] = pd.to_datetime(stallion_df.date[0:999]) + pd.offsets.DateOffset(months=3)
... 

對於年和月的 8000 行,這顯然不是最佳選擇。 任何幫助將非常感激。 謝謝

您基本上可以使用date_range創建要添加的系列:

dates = pd.Series(pd.date_range(start='1/3/2009', end='3/11/2011', freq='M'))

只需將其替換為您想要的開始和結束日期。 它會通過保留每個月的最后一天來自動增加月份和年份。 如果要將日期設置為特定日期:

dates.apply(lambda x: x.replace(day=3))

這將返回相同但所有條目的第 3 天。 如果您還想要一個更大的重復日期系列,您可以使用repeat為:

dates.repeat(10).reset_index(drop=True)

因此,這樣您將擁有相同的系列,但每個日期重復 10 次。

這是您預期的 output 嗎? 它正在構建日期范圍從'2018-01-03''2022-12-03'val列的笛卡爾積。 你有date-1date-m ,所以我用 100 代替m 。然后你會得到 6000 行。

m = 100
out = (pd.MultiIndex.from_product([[f'date-{i}' for i in range(1,m+1)], 
                            pd.date_range('2018-01-01','2022-12-01', freq='MS') + pd.DateOffset(days=2)])
       .to_frame(name=['val','date']).reset_index(drop=True))

Output:

           val       date
0       date-1 2018-01-03
1       date-1 2018-02-03
2       date-1 2018-03-03
3       date-1 2018-04-03
4       date-1 2018-05-03
...        ...        ...
5995  date-100 2022-08-03
5996  date-100 2022-09-03
5997  date-100 2022-10-03
5998  date-100 2022-11-03
5999  date-100 2022-12-03

[6000 rows x 2 columns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM