Python:将导入的日期转换为正确的格式以转换为日期时间



我已经将一些销售数据加载到Python中,不幸的是,日期列的格式不能使用pd.to_datetime转换为日期时间。注:202年应为2020年

sales['Calendar Year/Month'].unique()
8.202 ,  9.202 , 10.202 , 11.202 , 12.202 ,  1.2021,
2.2021, 3.2021,  4.2021,  5.2021,  6.2021,  7.2021,
8.2021,  9.2021, 10.2021, 11.2021, 12.2021,  1.2022,
2.2022,  3.2022,  4.2022, 5.2022,  6.2022,  7.2022

是否有任何方法(可能使用regex(将Calendar Year/Month列转换为使用pd.to_datetime(sales['Calendar Year/Month'], format='%m.%Y')的合适格式?

我想的规则是,如果.之前只有一个字符,则添加前导0;如果.之后只有三个字符,那么添加尾随0。

实现这一目标的最佳和最具蟒蛇风格的方式是什么?

也许不是最Python的,但如果日期是字符串格式,这是有效的。

def convert_date(date):
month, year = date.split(".")
if len(year) < 4:
year = year + "0"
return f"{month}.{year}"
# Set to str type if not already
df["Calendar Year/Month"] = df["Calendar Year/Month"].astype(str)
# Apply custom function to change the date format
df["Calendar Year/Month"] = df["Calendar Year/Month"].apply(convert_date)
# Convert to datetime
df["Calendar Year/Month"] = pd.to_datetime(df["Calendar Year/Month"], format='%m.%Y')

我认为您还需要一个day字段来拥有datetime/date对象。使用一个月第一天的假日子,一个可能的解决方案可能是(还没有检查边缘情况等(。

from math import floor
from datetime import date
values = [8.202 ,  9.202 , 10.202 , 11.202 , 12.202 ,  1.2021,
2.2021, 3.2021,  4.2021,  5.2021,  6.2021,  7.2021,
8.2021,  9.2021, 10.2021, 11.2021, 12.2021,  1.2022,
2.2022,  3.2022,  4.2022, 5.2022,  6.2022,  7.2022]
answer = [date(round(value%1*10000), floor(value), 1) for value in values]

相关内容

  • 没有找到相关文章

最新更新