【发布时间】:2018-10-15 09:25:05
【问题描述】:
我有如图所示的 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
【问题讨论】:
-
您的日期是否比玩具
data中显示的日期多,还是您感兴趣的日期的全包列表? -
我将每周阅读大约 2 次 Excel 文件,比较今年和去年的入学数据。我只是在 OP 中放了一个最小的例子。
标签: python pandas datetime dataframe string-to-datetime