gpt4 book ai didi

python - 根据月份和日期创建日期时间列,并根据月份创建年份

转载 作者:行者123 更新时间:2023-11-28 21:37:07 25 4
gpt4 key购买 nike

我有 mm-dd 形式的日期柱状数据,如图所示。我需要添加正确的年份(10 月到 12 月的日期是 2017 年,1-1 之后的日期是 2018 年)并创建一个日期时间对象。下面的代码可以工作,但是很难看。有没有更 Pythonic 的方法来实现这一点?

import pandas as pd
from datetime import datetime
import io

data = '''Date
1-3
1-2
1-1
12-21
12-20
12-19
12-18'''

df = pd.read_csv(io.StringIO(data))

for i,s in enumerate(df.Date):
s = s.split('-')
if int(s[0]) >= 10:
s = s[0]+'-'+s[1]+'-17'
else:
s = s[0]+'-'+s[1]+'-18'
df.Date[i] = pd.to_datetime(s)
print(df.Date[i])

打印:

2018-01-03 00:00:00
2018-01-02 00:00:00
2018-01-01 00:00:00
2017-12-21 00:00:00
2017-12-20 00:00:00
2017-12-19 00:00:00
2017-12-18 00:00:00

最佳答案

您可以将日期转换为 pandas datetime 对象。然后使用datetime.replace修改他们的年份。请参阅docs了解更多信息。

您可以使用以下代码:

df['Date'] = pd.to_datetime(df['Date'], format="%m-%d")
df['Date'] = df['Date'].apply(lambda x: x.replace(year=2017) if x.month in(range(10,13)) else x.replace(year=2018))

输出:

       Date
0 2018-01-03
1 2018-01-02
2 2018-01-01
3 2017-12-21
4 2017-12-20
5 2017-12-19
6 2017-12-18

关于python - 根据月份和日期创建日期时间列,并根据月份创建年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com