gpt4 book ai didi

python - 如何保持时间戳的毫秒分量,即使它的值为零?

转载 作者:行者123 更新时间:2023-12-05 04:55:24 25 4
gpt4 key购买 nike

我正在尝试用 Python 将数据写入 csv 文件。但是,我在编写时间戳时遇到了格式问题。

我的数据是 UNIX 毫秒格式。为此,我正在使用 pandas 内置的 to_datetime(unit = 'ms') 方法。但是,我的很多早期数据都没有秒内记录。数据仅以截断的秒间隔存储。因此,虽然我希望我的数据像这样存储 2015-01-01 00:00:00.000,但它却像这样存储它 2015-01-01 00:00:00 并完全删除毫秒组件。到了今年,我就有了可以写成 2020-01-01 00:01:07.748 的数据,例如。

可以在这里看到我编写的代码部分:

df = pd.DataFrame(data, columns = ['Trade ID', 'Date', 'Amount', 'Price'])

df['Date'] = pd.to_datetime(df['Date'], unit = 'ms')
df.to_csv(csv_file_path, mode = 'a', header = False, index = False)

我知道它与实际将其写入 csv 的行无关。因为它为确实具有秒内记录的记录保留毫秒数据。我知道它位于将它从毫秒转换为日期时间的行中。我也尝试在该方法中使用 format 参数,但由于您无法同时指定单位和格式,因此会引发错误。

最佳答案

用微秒(我不知道你在日期列中到底有什么)和映射和切片(帖子的最后一行)

df = pd.DataFrame({'datetime': {0: '2020/12/20 05:03:33.324',
1: '2020/12/20 05:03:55.33556'}})
print(df)
df['formatted'] = pd.to_datetime(df['datetime']).dt.strftime("%y-%m-%d %H:%M:%S.%f")
print(df)
df.to_csv("./dates.csv", mode = 'a', header = False, index = False)

控制台输出

                    datetime
0 2020/12/20 05:03:33.324
1 2020/12/20 05:03:55.33556
datetime date_time_formatted
0 2020/12/20 05:03:33.324 20-12-20 05:03:33.324000
1 2020/12/20 05:03:55.33556 20-12-20 05:03:55.335560

在csv文件中:

2020/12/20 05:03:33.324,20-12-20 05:03:33.324000
2020/12/20 05:03:55.33556,20-12-20 05:03:55.335560

从这里我检查了格式选项: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

事实上,使用 map 和 slice 是可行的:

df['with_map'] = pd.to_datetime(df['datetime']).dt.strftime("%y-%m-%d %H:%M:%S.%f").map(lambda date_time: date_time[:-3])

使用 str 和 slice(感谢@MrFuppes)

df['dt_final'] = pd.to_datetime(df['datetime']).dt.strftime("%y-%m-%d %H:%M:%S.%f").str[:-3]

关于python - 如何保持时间戳的毫秒分量,即使它的值为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65398625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com