将 pandas 数据帧保存到 CSV 时的日期时间
DateTime when saving pandas dataframe to CSV
背景:显然Google对一个非常基本的问题没有直接的答案,所以这里...
我有一个 pandas 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
。
最有可能的问题是您的 'date' 列实际上是一个字符串列,但是您用于 'preview' 数据的工具正在将这些字符串解释为日期并实际以某些形式显示它们其他格式。
但是,鉴于您提供的信息有限,这只是猜测。如果您提供一些示例数据来证明该问题,则肯定会更容易确定。
背景:显然Google对一个非常基本的问题没有直接的答案,所以这里...
我有一个 pandas 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
。
最有可能的问题是您的 'date' 列实际上是一个字符串列,但是您用于 'preview' 数据的工具正在将这些字符串解释为日期并实际以某些形式显示它们其他格式。
但是,鉴于您提供的信息有限,这只是猜测。如果您提供一些示例数据来证明该问题,则肯定会更容易确定。