首页 文章

Pandas read_csv读取时间偏移字符串

提问于
浏览
0

我有一个文本文件,其中包含像'10:15.3'这样的列,这意味着在一些规范事件发生后10分15.3秒 . 当我用read_csv读取它时,我得到了字符串:

>>> df.time.head()
0    08:32.0
1    08:38.0
2    08:39.0
3    08:43.0
4    09:15.0
Name: time, dtype: object
 >>> df.time.head()[:1][0]
'08:32.0'
>>>

我觉得我应该能够在pandas中轻松获得秒数,或者通过在read_csv中指定转换,或者(可能更好,所以我同时使用)通过添加新列,但我没有看到如何做到这一点 . 我很确定这只是我的密集 .

任何人都可以提供一个提示,以帮助我解开?

4 回答

  • 0

    使用0.15,这很容易做到,完整的文档是here

    您的格式不是“常规”格式,但可以通过预先挂起的'00:'来制作小时字段 .

    In [20]: pd.Timedelta('00:' + '10:15.3')
    Out[20]: Timedelta('0 days 00:10:15.300000')
    
    In [19]: s
    Out[19]: 
    0    08:32.0
    1    08:38.0
    2    08:39.0
    3    08:43.0
    4    09:15.0
    Name: 1, dtype: object
    

    将它解析为timedelta .

    In [15]: res = pd.to_timedelta('00:' + s)
    
    In [16]: res
    Out[16]: 
    0   00:08:32
    1   00:08:38
    2   00:08:39
    3   00:08:43
    4   00:09:15
    Name: 1, dtype: timedelta64[ns]
    

    这些是规范缩小格式的显示秒数(例如hh:mm:最低形式的ss) .

    In [17]: res.dt.seconds
    Out[17]: 
    0    32
    1    38
    2    39
    3    43
    4    15
    dtype: int64
    

    如果您需要表示的总秒数,请执行此操作(这称为频率转换):

    In [18]: res.astype('timedelta64[s]')
    Out[18]: 
    0    512
    1    518
    2    519
    3    523
    4    555
    Name: 1, dtype: float64
    
  • 1

    没有使用熊猫,但我会像这样提取秒:

    from time import strptime
    print strptime('09:12.14','%I:%M.%S').tm_sec
    
  • 0

    您可以使用 datetime.time 对象 . 为此,您需要提供:小时,分钟,秒,微秒 . 它们以整数形式提供,因此您只需要将每个字符串的相关部分int转换为datetime.date构造函数 .

    所以在你的情况下:

    import datetime 
    df = pd.read_csv('your_csv.csv')
    df.time = pd.Series([datetime.time(0, int(val[:2]), int(val[3:5]), int(val[6:])*100000)
                         for val in df.time], index = df.index)
    
  • 1

    我不能用pandas内部真正帮助你,但有一种简单的pythonic方式来获得数字格式的秒数:

    timeStr = '08:32.0'
    seconds = float(time.split(':')[1]) # Split splits the string at the ':' character making a list of strings. Taking the second item from the list and casting to float should get you what you want.
    

相关问题