组织日期格式(非公历) - Python 3

时间:2018-05-02 21:43:31

标签: python pandas date jalali-calendar

我有一个大型销售数据库,第一列是购买日期。问题是其中一些日期是以DD.MM.YY格式输入的,有些是YY.MM.DD,有些是YYYY/MM/DD。我想让它们全部采用相同的格式。我能做到这一点最干净的方法是什么?

注1:我正在考虑做一系列if,但这将是很多条件,所以我想知道是否有更简洁的捷径。

注2:另一个复杂因素是日期是Jalaali日历而不是Gregorian。我有将它们转换为格里高利的函数,但我需要将正确的year, month, day参数传递给它;这就是为什么我想将它们全部用于单一格式。但另外,这意味着,如果你提供一些"仅限Gregorian"解决方案,如dateutil.parser,它可能无效。

1 个答案:

答案 0 :(得分:0)

发布此消息后,我立即发现/想到了一个解决方案,但我没有删除问题,而是决定发布答案以防其他人遇到类似的问题。

tl; dr - 我刚刚为dateutil.parser添加了一个世纪选项。我不知道该怎么做,但我找到了this

这是我的结束代码:

from khayyam import JalaliDate
from dateutil.parser import parse, parserinfo

class MyParserInfo(parserinfo):
    def convertyear(self, year, *args, **kwargs):
        if year < 100:
            year += 1300
        return year

if __name__ == '__main__':
    dt = parse("9.12.96", MyParserInfo()).date()
    a=JalaliDate(dt.year, dt.month, dt.day).todate()
    print(dt)
    print(a)

#1396-09-12
#2017-12-03