【问题标题】:read date time column into pandas dataframe. retain seconds information in the dataframe将日期时间列读入熊猫数据框。在数据框中保留秒信息
【发布时间】:2019-06-15 13:27:36
【问题描述】:

我的 csv 文件。

   Timestamp
---------------------
1/4/2019  2:00:09 PM
1/4/2019  2:00:18 PM

我在 csv 文件中有一个列日期时间信息。我想将此作为时间戳列读入熊猫数据框中。 我想保留秒信息。

努力1: 我试过了

def dateparse (timestamp):

    return pd.datetime.strptime(timestamp, '%m/%d/%Y %H:%M:%S ')

df = pd.read_csv('file_name.csv', parse_dates['Timestamp'],date_parser=dateparse)

以上将秒数四舍五入到类似

1/4/2019  2:00:00

努力2:

我想使用读取整个文件,然后将其转换为数据帧。

with open('file name.csv') as f:
    for line in f:
        print(line)

但这里的秒信息再次被四舍五入。

编辑 1:

当我在 sublime 等编辑器中打开这个 csv 文件时,秒信息被截断。

【问题讨论】:

  • 源文件没有秒数?那就不可能读了...
  • @vijju 在读取 csv 文件时,您是否尝试查看 col 的 dtype。如果不是datetime[ns] 试试df['col1'] = pd.to_datetime(df['col1'], format='%d%b%Y:%H:%M:%S.%f')
  • @Sumanth :问题是,一旦我将文件读入数据帧,秒数就会被截断。您建议的步骤只有在我阅读文件后才会发生。这有什么帮助。

标签: python-3.x pandas datetime timestamp


【解决方案1】:

对我来说工作省略date_parser=dateparse:

import pandas as pd

temp=u"""Timestamp1
1/4/2019  2:00:09 PM
1/4/2019  2:00:18 PM"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), parse_dates=['Timestamp1'])

print (df)
           Timestamp1
0 2019-01-04 14:00:09
1 2019-01-04 14:00:18

print (df.dtypes)
Timestamp1    datetime64[ns]
dtype: object

编辑1:

应更改正确的日期时间格式:

import pandas as pd

def dateparse (timestamp):

    return pd.datetime.strptime(timestamp, '%m/%d/%Y %I:%M:%S %p')

temp=u"""Timestamp1
1/4/2019  2:00:09 AM
1/4/2019  2:00:09 PM
1/4/2019  2:00:18 PM"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), parse_dates=['Timestamp1'],date_parser=dateparse)

print (df)
           Timestamp1
0 2019-01-04 02:00:09
1 2019-01-04 14:00:09
2 2019-01-04 14:00:18

print (df.dtypes)
Timestamp1    datetime64[ns]
dtype: object

EDIT2:

df = pd.read_csv('send1.csv', parse_dates=['Timestamp'])
print (df)
            Timestamp
0 2019-01-04 14:00:00
1 2019-01-04 14:00:00
2 2019-01-04 14:00:00
3 2019-01-04 14:00:00
4 2019-01-04 14:00:00
5 2019-01-04 14:00:00

【讨论】:

  • 这不起作用。结果:2019-01-04 14:00:00 我将 pd.compat.StringIO(temp) 替换为 filename.csv
  • @vijju - 是的,检查编辑。如果没有关于秒的信息是不可能的,请阅读它。还是缺少什​​么?
  • 有秒信息。问题开头的第一个信息是 csv 文件
  • ValueError: 时间数据 '1/4/2019 14:00' 与格式 '%m/%d/%Y %I:%M:%S %p' 不匹配
  • @vijju - 数据文件是保密的吗?可以分享吗?
猜你喜欢
  • 2021-10-12
  • 2018-06-16
  • 2022-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2017-05-21
  • 1970-01-01
相关资源
最近更新 更多