在日期栏中更改年份

Yun*_*ang 1 python date dataframe pandas

我有一个日期第一列的数据框。

import pandas as pd    
df = pd.DataFrame({'Date': ['8/4/2014','8/5/2014','8/14/2014','8/21/2014','8/23/2015','8/24/2015']})
Run Code Online (Sandbox Code Playgroud)

我想将2014年更改为2015年,将2015年更改为2016年。

我在看pandas.datetime,但似乎没有此功能。请在这里帮助我。非常感谢。

Moh*_*ani 5

你可以试试这个:

df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = df['Date'].apply(lambda x: x.replace(year = x.year + 1))
Run Code Online (Sandbox Code Playgroud)

您还可以使用pd.Timedelta

df['Date'] + pd.Timedelta(days = 365)
Run Code Online (Sandbox Code Playgroud)

另一种选择是pd.DateOffset

df['Date'] = df['Date'] + pd.DateOffset(years=1)
Run Code Online (Sandbox Code Playgroud)


kev*_*s_1 5

这是一个简单的字符串替换,无需使用日期时间方法:

df['Date'].replace('2015', '2016', regex=True).replace('2014', '2015', regex=True)
Run Code Online (Sandbox Code Playgroud)

这样,如果您担心的话,就不必更改数据框中的所有年份。


ALo*_*llz 5

您应该避免申请。使用pd.offsets.Dateoffset。不管leap年如何,这都会使日历年正确。

df['Date'] = pd.to_datetime(df.Date) + pd.offsets.DateOffset(years=1)
Run Code Online (Sandbox Code Playgroud)

输出:

        Date
0 2015-08-04
1 2015-08-05
2 2015-08-14
3 2015-08-21
4 2016-08-23
5 2016-08-24
Run Code Online (Sandbox Code Playgroud)