如何防止 pandas 将原始数据库日期格式转换为 pandas 日期格式

Posted

技术标签:

【中文标题】如何防止 pandas 将原始数据库日期格式转换为 pandas 日期格式【英文标题】:How to prevent pandas converting the original database date format to pandas date format 【发布时间】:2020-07-23 15:30:13 【问题描述】:

我的日期格式在数据库中是这样的格式:9/15/2017 5:01:44 AM

但是当 read_sql 使用 pandas 时,日期格式变成这样 2017-09-15 05:01:44

这里有两个问题:

    第一个是 / 改为 - 第二个是mm/dd/yyyy变了 tod yyyy-mm-dd。 year 成为第一个元素。

主要问题是我在不同的表中有不同格式的日期列,有些只是日期,有些是日期和时间戳

我不知道格式是什么样的。 读取数据时有什么办法可以保留原始格式吗?

【问题讨论】:

您如何从数据库中检索数据以及列类型是什么? 【参考方案1】:

让我们试试:strftime('%m/%d/%Y') 函数。

import pandas as pd

df = pd.DataFrame('test': 0: '23/07/2020', 1: '23/07/2020')
print (df)
        test
0  23/07/2020
1  23/07/2020

df['test'] = pd.to_datetime(df.test)
print (df)
        test
0 23-07-2020
1 23-07-2020

df['test1'] = df['test'].dt.strftime('%m/%d/%Y')
print (df)
        test       test1
0 23-07-2020  23/07/2020
1 23-07-2020  23/07/2020

【讨论】:

【参考方案2】:

简短的回答是:我 99% 确定你不能(尽管我只能用谷歌搜索“熊猫”)

稍长一点的答案是您的问题没有意义:所有数据都以二进制值的形式存储在系统内部。除了“存储格式”(适用于数据库服务器)之外,您还应该关注“显示格式”,它主要适用于您选择查看数据的客户端软件。请注意,所有数据类型都是如此,包括日期,但整数、浮点数、字符串都具有与“显示格式”截然不同的“存储格式”。

此外,SAS、R、python(或 Pandas)等所有软件系统也能够将数据存储在文件中,每种数据类型的“存储格式”理论上可能与数据库中的相同,但预计会有所不同. 根据数据的来源,客户端甚至可能对相同的数据类型有不同的“显示格式”(尽管我认为这是不好的行为)

这对你有意义吗?

【讨论】:

以上是关于如何防止 pandas 将原始数据库日期格式转换为 pandas 日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何防止 pandas.to_datetime() 函数将 0001-01-01 转换为 2001-01-01

python - 如何将带有年份的周数转换为python pandas中的日期时间格式?

如何在 pandas python 中将字符串转换为日期时间格式?

如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式

防止日期转换溢出