将随机字符串转换为 python 中的日期时间
convert random string to datetime in python
我提取了日期格式为 28-12-2019 19:13 +07:00
的数据,但 Pandas 未将其识别为日期时间。如何使用列名 creation_date
创建新列并添加正确的日期时间格式。
我试过了但是错误
data = 'data.xlsx'
df = pd.read_excel(data)
df['creation_date'] = pd.to_datetime(df['date'].str[:2] + '-' + df['date'].str[4:2] + '-' + df['date'].str[7:4])
print(df)
我希望在 excel 中识别格式,即 12/28/2019 08:13:00 PM
。 +1 小时,因为我的格林威治标准时间是 +8
我已经为单个字符串编写了以下解决方案。在您的情况下,您需要针对整个数据框列对其进行调整。
首先,您需要将包含日期和时间的字符串转换为datetime
对象。
您可以使用以下代码执行此操作:
import datetime
Date = "28-12-2019 19:13 +07:00"
datetimeObj = datetime.datetime.strptime(Date, "%d-%m-%Y %H:%M %z")
这会给你一个像这样的 datetime
对象:
datetime.datetime(2019, 12, 28, 19, 13, tzinfo=datetime.timezone(datetime.timedelta(seconds=25200)))
接下来您需要做的是,将此 datetime
对象转换为您首选的时区。
为此,您可以使用以下代码:
datetimeObj.astimezone(ZoneInfo('Europe/London'))
注:
- 为了演示,我考虑过
London
。您需要相应地选择它。
- 以上解决方案仅在安装了
Python 3.9+
后才有效。如果您安装了任何其他版本,请检查 this 答案。
接下来您需要做的是格式化 datetime
对象,以便它以您想要的方式表示日期和时间。
datetimeObj = datetime.datetime.strftime(datetimeObj, "%m/%d/%Y %H:%M")
这将产生以下输出:
'12/28/2019 12:13'
我提取了日期格式为 28-12-2019 19:13 +07:00
的数据,但 Pandas 未将其识别为日期时间。如何使用列名 creation_date
创建新列并添加正确的日期时间格式。
我试过了但是错误
data = 'data.xlsx'
df = pd.read_excel(data)
df['creation_date'] = pd.to_datetime(df['date'].str[:2] + '-' + df['date'].str[4:2] + '-' + df['date'].str[7:4])
print(df)
我希望在 excel 中识别格式,即 12/28/2019 08:13:00 PM
。 +1 小时,因为我的格林威治标准时间是 +8
我已经为单个字符串编写了以下解决方案。在您的情况下,您需要针对整个数据框列对其进行调整。
首先,您需要将包含日期和时间的字符串转换为datetime
对象。
您可以使用以下代码执行此操作:
import datetime
Date = "28-12-2019 19:13 +07:00"
datetimeObj = datetime.datetime.strptime(Date, "%d-%m-%Y %H:%M %z")
这会给你一个像这样的 datetime
对象:
datetime.datetime(2019, 12, 28, 19, 13, tzinfo=datetime.timezone(datetime.timedelta(seconds=25200)))
接下来您需要做的是,将此 datetime
对象转换为您首选的时区。
为此,您可以使用以下代码:
datetimeObj.astimezone(ZoneInfo('Europe/London'))
注:
- 为了演示,我考虑过
London
。您需要相应地选择它。 - 以上解决方案仅在安装了
Python 3.9+
后才有效。如果您安装了任何其他版本,请检查 this 答案。
接下来您需要做的是格式化 datetime
对象,以便它以您想要的方式表示日期和时间。
datetimeObj = datetime.datetime.strftime(datetimeObj, "%m/%d/%Y %H:%M")
这将产生以下输出:
'12/28/2019 12:13'