[英]Convert date (month, day, year, time) to Datetime format in python
[英]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-1
到date-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.