【问题标题】:How to add pandas time stamp to a dataframe post read_cvs如何将 pandas 时间戳添加到数据帧 post read_csv
【发布时间】:2019-11-19 19:08:43
【问题描述】:

读取 cvs 文件后,如何在数据框中添加时间戳?我有一个带有测量值的数据集,但没有时间戳。我知道传感器数据的频率 (200 Hz) 和开始日期/时间。

我试图计算文件中的行数并创建一个时间列。使用 pd.insert 我插入了这个时间戳。我的问题是,在绘制这些数据时,我的 x 轴不显示属性时间戳,而是显示测量次数。我的代码:


    #Importing signals 
    data = pd.read_csv('.../monday.txt')
    data.columns = ['l1','l2','l3','l4','l5','l6']

    print("Sensor data: ")
    print(data.head())
    print(data.dtypes)

    nbrMeasurments = sum(1 for line in open('.../monday.txt'))
    data.insert(0, "Time", pd.timedelta_range('11:24:26', 
    periods=nbrMeasurments-1, freq="5L"))

    print("Revised sensor data: ")
    print(data.head())
    print(data.dtypes)

在另一个有时间戳的文件中,pd.read_csv('.../mondayV1.csv',index_col='Date', usecols= [0,1,2], parse_dates=True) 中的“index_col='Date'”似乎是确保 x 轴由日期而不是测量编号“x”引用的命令:

                         SYS (mmHg)  DIA (mmHg)
    Date                                       
    2019-08-07 13:06:30         111          61
    2019-08-07 13:07:08         114          64
    2019-08-07 13:07:56         112          63
    2019-08-07 13:08:42         127          81
    2019-08-07 13:09:19         129          83
    Omron data types: 
    SYS (mmHg)    int64
    DIA (mmHg)    int64

在我尝试插入没有时间戳的文件时,“时间”被列为变量:

                 Time        l1        l2        l3        l4       l5       
    l6
    0        11:24:26  0.787261  0.943828  1.100903  0.835889  2.524946  
    2.252113
    1 11:24:26.005000  0.787068  0.943638  1.100871  0.835882  2.531180  
    2.253063
    2 11:24:26.010000  0.786951  0.943496  1.100779  0.835909  2.531573  
    2.253395
    3 11:24:26.015000  0.786879  0.943553  1.100877  0.835877  2.533841  
    2.254906
    4 11:24:26.020000  0.786682  0.943536  1.100651  0.835674  2.539893  
    2.257780
    Time    timedelta64[ns]
    l1              float64
    l2              float64
    l3              float64
    l4              float64
    ecg             float64
    ppg             float64

如何以最有效的方式将时间归因于该文件?

【问题讨论】:

    标签: python python-3.x pandas dataframe timestamp


    【解决方案1】:

    像这样尝试data.set_index(keys="Time", inplace=True)

    import pandas as pd
    from io import StringIO
    
    data = pd.read_csv(StringIO("""
                 Time        l1        l2        l3        l4       l5       l6
    0        11:24:26  0.787261  0.943828  1.100903  0.835889  2.524946  2.252113
    1 11:24:26.005000  0.787068  0.943638  1.100871  0.835882  2.531180  2.253063
    2 11:24:26.010000  0.786951  0.943496  1.100779  0.835909  2.531573  2.253395
    3 11:24:26.015000  0.786879  0.943553  1.100877  0.835877  2.533841  2.254906
    4 11:24:26.020000  0.786682  0.943536  1.100651  0.835674  2.539893  2.257780"""), sep="\s+")
    
    data.set_index(keys="Time", inplace=True)
    
    print(data)
    

    输出:

                           l1        l2        l3        l4        l5        l6
    Time                                                                       
    11:24:26         0.787261  0.943828  1.100903  0.835889  2.524946  2.252113
    11:24:26.005000  0.787068  0.943638  1.100871  0.835882  2.531180  2.253063
    11:24:26.010000  0.786951  0.943496  1.100779  0.835909  2.531573  2.253395
    11:24:26.015000  0.786879  0.943553  1.100877  0.835877  2.533841  2.254906
    11:24:26.020000  0.786682  0.943536  1.100651  0.835674  2.539893  2.257780
    

    【讨论】:

      【解决方案2】:

      将值分配给索引而不是data.insert

      data = pd.read_csv('.../monday.txt')
      data.columns = ['l1','l2','l3','l4','l5','l6']
      
      print("Sensor data: ")
      print(data.head())
      print(data.dtypes)
      
      nbrMeasurments = sum(1 for line in open('.../monday.txt'))
      data.index = pd.timedelta_range('11:24:26', periods=nbrMeasurments-1, freq="5L")
      
      #another solution
      #data = data.set_index(pd.timedelta_range('11:24:26', periods=nbrMeasurments-1, freq="5L"))
      print("Revised sensor data: ")
      print(data.head())
      print(data.index)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2018-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多