保存到csv文件python时更改日期时间格式

时间:2015-05-18 08:15:12

标签: python pandas

我有一个这样的数据框:

In [67]:
call_df.head()
Out[67]:
timestamp   types
1   2014-06-30 07:00:55 Call_O
2   2014-06-30 07:00:05 Call_O
3   2014-06-30 06:54:55 Call_O
501 2014-06-30 11:24:01 Call_O

当我将该数据帧保存到csv文件时,日期时间的格式会发生变化,但我会丢失秒数。我只是把这段代码保存到csv文件中:

call_df.to_csv('D:/Call.csv')

csv文件输出如下:

enter image description here

在这里我想问一下,如何将相同的日期时间格式从dataframe保存到csv文件

4 个答案:

答案 0 :(得分:8)

to_csv接受date_format参数,请尝试以下操作:

call_df.to_csv('D:/Call.csv', date_format='%Y-%m-%d %H:%M:%S')

在您的样本数据集中,这产生了:

timestamp,types
2014-06-30 07:00:55,Call_O
2014-06-30 07:00:05,Call_O
2014-06-30 06:54:55,Call_O
2014-06-30 11:24:01,Call_O

答案 1 :(得分:1)

你的问题不是python问题而且无法直接修复。为什么呢?

当您从excel打开csv文件时,它会将您的数据转换为它应该是的任何类型,在这种情况下,您的数据转换为日期类型,然后excel将默认日期格式应用于该数据。此外,您无法控制Excel文件的日期格式,因为csv文件只是一个文本文件,没有meta或隐藏数据来建议excel继续。

如果您仍想在excel中控制格式,则需要强制数据为字符串,而不是日期。大多数情况下我们添加'在任何数据前面我们更喜欢字符串格式。您可以根据需要显示正确的格式,但会丢失日期数据类型。

答案 2 :(得分:1)

这个问题的答案分为两个步骤:

1)首先将时间戳列转换为日期时间:

call_df['timestamp'] = call_df['timestamp'].astype('datetime64[ns]')

2)使用" to_csv"添加date_format参数。执行第一步后:

call_df.to_csv("Call.csv", date_format='%Y-%m-%d %H:%M:%S')

答案 3 :(得分:0)

将日期时间列更改为字符串:

    call_df['timestamp'] = call_df['timestamp'].apply(lambda v: str(v))

然后你可以保存到csv以保留格式