如何解决在python中将十六进制字符串转换为日期时间结果
我一直在尝试寻找执行以下操作的方法。
我刚刚收到一个带有以下公式的 excel 文件。
Row Value Excel formula Result
608332e6943e7263a56fb3ff =(((HEX2DEC(LEFT("row value",8))/60)/60)/24)+DATE(1970,1,1) 4/23/2021 8:49:42 PM
我想知道是否有办法在 python 中实现相同的结果。我尝试了以下但没有奏效。
df_final = pd.read_csv("Book1.csv")
print(df_final)
Card ID # of Members Created Date
0 608332c0806da55df13b498b 2 608332c0
1 60819c7ccd3a695b79f54f53 5 60819c7c
2 60817b9df8f5422bbaf2cff9 9 60817b9d
3 60806f3d24f11404f1470904 2 60806f3d
4 607ed78a89de73411e937655 1 607ed78a
5 608332e6943e7263a56fb3ff 2 608332e6
6 6.05364E+23 5 6.05364E
7 6.04084E+23 6 6.04084E
8 6.05395E+22 2 6.05395E
9 6.04716E+23 1 6.04716E
hexa = df_final["Created Date"]
df_final["Created Date"] = ((int(hexa,16)/60)/60)/24 + datetime.datetime(1970,1)
print(df_final)
我希望得到这样的输出:
Card ID # of Members Created Date
0 608332c0806da55df13b498b 2 4/23/2021
1 60819c7ccd3a695b79f54f53 5 4/22/2021
2 60817b9df8f5422bbaf2cff9 9 4/22/2021
3 60806f3d24f11404f1470904 2 4/21/2021
4 607ed78a89de73411e937655 1 4/20/2021
5 608332e6943e7263a56fb3ff 2 4/23/2021
6 6.05364E+23 5 Invalid
7 6.04084E+23 6 Invalid
8 6.05395E+22 2 Invalid
9 6.04716E+23 1 Invalid
但是,我得到的只是以下错误:
df_final["Created Date"] = ((int(hexa,1)
TypeError: int() can't convert non-string with explicit base
关于如何完成这项工作的想法? 我感谢任何帮助! 乔。
根据 Otávio 的回复,我尝试重新运行,但仍然无法实现我想要的。
如果只有一个字符串,练习就可以完成工作,但当涉及多个值时,它就无法完成工作。例子如下:
df_final = pd.read_csv("Book1.csv")
df_final["Created Date"] = df_final["Card ID"].str[0:8]
print(df_final)
hex = df_final["Created Date"]
dtime_obj = datetime.datetime.utcfromtimestamp(int(hex,16))
datetime_str = dtime_obj.strftime('%Y-%m-%dT%H:%M')
print(df_final)
Card ID # of Members Created Date
0 608332c0806da55df13b498b 2 608332c0
1 60819c7ccd3a695b79f54f53 5 60819c7c
2 60817b9df8f5422bbaf2cff9 9 60817b9d
3 60806f3d24f11404f1470904 2 60806f3d
4 607ed78a89de73411e937655 1 607ed78a
5 608332e6943e7263a56fb3ff 2 608332e6
6 6.05364E+23 5 6.05364E
7 6.04084E+23 6 6.04084E
8 6.05395E+22 2 6.05395E
9 6.04716E+23 1 6.04716E
Traceback (most recent call last):
File "c:\Users\JUB\Desktop\Manual Formulas 1\hexa.py",line 16,in <module>
dtime_obj = datetime.datetime.utcfromtimestamp(int(hex,16))
TypeError: int() can't convert non-string with explicit base
谢谢大家帮我解决! 乔。
解决方法
将十六进制字符串转换为整数,然后将此整数转换为日期时间元组:
import datetime
hex = '608332c0'
dtime_obj = datetime.datetime.utcfromtimestamp(int(hex,16))
datetime_str = dtime_obj.strftime('%Y-%m-%dT%H:%M') # '2021-04-23T20:49:04Z'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。