【问题标题】:Grouping rows with same date Pandas df分组具有相同日期的行 Pandas df
【发布时间】:2021-03-01 04:05:38
【问题描述】:

我有一个 csv 文件,其中包含来自多个传感器的数据,如下所示:

YY,   mm, dd, HH, MM,  sensor, sensorvalue
2018, 1,  1,  00, 00,  1,      0.2
2018, 1,  1,  00, 10,  1,      0
2018, 1,  1,  00, 20,  1,      0.1
2018, 1,  1,  00, 00,  2,      90.1
2018, 1,  1,  00, 10,  2,      90.3
2018, 1,  1,  00, 20,  2,      91.0
2018, 1,  1,  00, 00,  7,      1.5
2018, 1,  1,  00, 10,  7,      1.3
2018, 1,  1,  00, 20,  7,      0.7

我想在 pandas df 上转换它,每个传感器都有一个列,日期时间作为索引,如下所示:

date,           sensor1value, sensor2value, sensor7value
2018-1-1 00:00, 0.2,          90.1,         1.5
2018-1-1 00:10, 0,            90.3,         1.3
2018-1-1 00:20, 0.1,          91.0,         0.7

在 pandas 上有一种简单的方法吗?

【问题讨论】:

    标签: python pandas dataframe datetime time-series


    【解决方案1】:

    您可能希望使用 pandas apply 来循环遍历行并创建 datetime 日期并将其设置为索引。 比如:

    df.set_index(df.apply(lambda row: datetime(int(row["YY"]), int(row["mm"]), int(row["dd"]), int(row["HH"]), int(row["MM"])), axis=1)).loc[:, ["sensor1value", "sensor2value", "sensor7value"]]
    

    【讨论】:

      【解决方案2】:

      感谢 Gabriel 的回答,lambda 函数运行良好,但 iloc 部分并不完全是我需要做的,所以我使用带有每个传感器代码名称的 dic 并使用数据透视表创建了一个解决方案:

      estParams = {
          1: 'sensor1value',
          2: 'sensor2value',
          7: 'sensor7value'
      }
          
      date = df.apply(lambda row: datetime(int(row["YY"]), int(row["mm"]), int(row["dd"]), int(row["HH"]), int(row["MM"])), axis=1)
      df.insert(0, 'Date', date)
      
      df["sensor"].replace(estParams, inplace=True)
      pivot = df.pivot_table('sensorvalue', ['Date'], 'sensor')
      

      数据透视表:

      sensor                sensor1value  sensor2value    sensor7value
      Date            
      2018-01-01 00:00:00   0.2              90.1          1.5
      2018-01-01 00:10:00   0.0              90.3          1.3
      2018-01-01 00:20:00   0.1              91.0          0.7
      

      【讨论】:

        猜你喜欢
        • 2020-01-30
        • 2021-09-12
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 2021-04-20
        • 2019-10-03
        • 1970-01-01
        相关资源
        最近更新 更多