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

标签 python pandas datetime

我正在尝试用 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/

相关文章:

c# - C#比较月份

Python调用同一文件夹中的.txt文件

python - PyQt5加载网页内容时返回None值

pandas - 有没有办法像 Pyspark 那样将 Pandas 数据保存在多个(parquet/csv)文件中?

python - 根据 pandas 0.16 中的条件更新列

java - 序列化和反序列化 Joda DateTime 对象

powershell - 如何基于另一个格式化的时间戳生成时间戳

python - 在 python 中将字符转换为对应的 ascii 字符的最简单方法是什么?

python - sqlalchemy.exc.InvalidRequestError : One or more mappers failed to initialize - can't proceed with initialization of other mappers 错误

python - pandas MultiIndex 中的幽灵指数