【问题标题】:Use Python to Change csv Data Column Format使用 Python 更改 csv 数据列格式
【发布时间】:2016-01-14 17:24:00
【问题描述】:

我正在使用 python pandas 来读取 csv 文件。 csv 文件的日期时间列具有秒精度“9/1/2015 9:25:00 AM”,但如果我在 excel 中打开,它只有分钟精度“9/1/15 9:25”。此外,当我使用 pd.read_csv() 函数时,它只显示精确到分钟。有什么方法可以使用python解决问题吗?非常感谢。

【问题讨论】:

  • 您确定这是 CSV 问题,而不是 Excel 格式问题吗?默认情况下,当 Excel 打开 CSV 时,它会转换日期时间值(相当烦人),然后使用 MM/DD/YYYY HH:MM AM/PM 的“日期”样式对其进行格式化。尝试将格式更改为“YYYY-DD-MM HH:MM:SS.000”
  • 您能否展示您的 csv 实际外观(可能是 csv 的前几行)以及您正在使用的代码。

标签: python excel csv pandas


【解决方案1】:

这是 Excel 的时间格式问题/哲学。出于某种原因,微软更喜欢在用户显示器上隐藏秒和亚秒:甚至 MSDOS 的 dir 命令也省略了秒。

如果我是你,我会使用 Excel 的 format 操作并将其设置为显示秒数,然后将电子表格另存为 CSV 并查看其中是否放入任何内容以记录改进的格式。

如果这不起作用,您可以探索创建一个执行格式设置的宏,或者使用 IPC 到 Excel 之一来命令它执行您的出价。

【讨论】:

  • Excel 不会在 CSV 文件中保存任何内容来指示格式。它特别告诉您格式化将丢失以该格式保存。不过,Excel 可能会将日期时间值更改为“42293.0037430556”之类的值,这同样令人讨厌。
【解决方案2】:

进入“单元格格式”并输入d/mm/yyyy h:mm:ss作为您的自定义格式选项

编辑:不确定我是否完全理解您的问题。试试这个:用一行“9/1/2015 9:25:00 AM”创建一个文本文件,命名为test.csv。现在做df = pd.read_csv('test.csv', header=None)。如果您使用df[0] 打印您的专栏,您应该会看到:

In [35]: df[0]
Out[35]:
0    9/1/2015 9:25:00 AM
Name: 0, dtype: object

即Pandas 刚刚将该列作为字符串(对象)读取,秒数就在那里。

如果要转换为时间戳,请致电pd.to_datetime

In [36]: pd.to_datetime(df[0])
Out[36]:
0   2015-09-01 09:25:00
Name: 0, dtype: datetime64[ns]

秒数仍然存在。这能回答你的问题吗?

【讨论】:

  • 嗨,我有 90000 多个这样的文件。我不太可能使用此功能手动更改格式。有没有办法让我直接调用 pd.read_csv() 函数来显示时间到秒的精度?谢谢。
猜你喜欢
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 2017-10-22
相关资源
最近更新 更多