将panda数据帧保存到CSV时的DateTime



背景:显然谷歌对一个非常基本的问题没有一个直接的答案,所以下面是。。。

我有一个熊猫df,有一个Open Date列[Dtype=object],它(预览df时(的格式是yyyy-mm-dd,这是我想要的格式,太棒了!然而,当我将df写入.csv时,它的格式默认为m/dd/yyyy

问题:我已经尝试了.csv输出yyyy-dd-mm的所有方法,但都没有成功。

我尝试过的:

我尝试在编写.csv时指定日期格式

df.to_csv(filename, date_format="%Y%d%d")

在写入.csv之前,我曾尝试更改有问题的列的格式

df['Open Date'] = pd.to_datetime(df['Open Date'])

我还尝试将列转换为字符串,以尝试并强制输出正确的

df['Open Date'] = df['timestamp'].apply(lambda v: str(v))

尽管进行了这些尝试,我仍然得到了m/dd/yyyy输出。

帮助:我哪里出了令人尴尬的问题?

您的问题包含各种严重的拼写错误,这些错误似乎表明了问题的总体原因。

你说的话有一些问题。考虑:

from pandas import DataFrame
from datetime import datetime
# just some example data, including some datetime and string data
data = [
{'Open date': datetime(2022, 3, 22, 0, 0), 'value': '1'},
{'Open date': datetime(2022, 3, 22, 0, 1), 'value': '2'},
{'Open date': datetime(2022, 3, 22, 0, 2), 'value': '3'}
]
df = DataFrame(data)
# note how the 'Open date' columns is actually a `datetime64[ns]`
# the 'value' string however is what you're saying you're getting, `object`
print(df['Open date'].dtype, df['value'].dtype)
# saving with a silly format, to show it works:
df.to_csv('test.csv', date_format='%Y.%m.%d')

生成的文件:

,Open date,value
0,2022.03.22,1
1,2022.03.22,2
2,2022.03.22,3

我选择了一个愚蠢的格式,因为我的默认格式实际上是%Y-%m-%d

最有可能的问题是,您的"日期"列实际上是一个字符串列,但用于"预览"数据的工具将这些字符串解释为日期,并实际以其他格式显示。

然而,由于您提供的信息有限,这只是猜测。如果你提供一些示例数据来证明这个问题,那么肯定会更容易说出来。

最新更新