【问题标题】:Wide to long dataframes - Error using timestamp as index宽到长数据帧 - 使用时间戳作为索引时出错
【发布时间】:2021-03-16 03:42:18
【问题描述】:

我正在使用以 DD/MM/YYYY HH:mm:ss 形式将日期时间作为索引的数据框,后跟一系列名为 Sitename_Parameter 的列。对于相同的站点名称,我有不同的参数。

我想将其转换为长格式,其中日期时间和站点名称作为索引,参数作为列。

我正在使用此代码:

df=pd.wide_to_long(df, stubnames=['Sitename1','Sitename2',...,'Sitenamen'], i=["Timestamp"], j="Parameter",sep='_', suffix=r'\w+')

但我遇到了两个问题:

  1. 当我使用时间戳作为索引时,数据必须是一维的。当我使用标准索引时,我没有收到此错误。
  2. 此代码将站点名称作为列,将参数作为行,这与我想要的相反。但是,如果我将带有参数的站点名称替换为存根名称,则会出现错误。

【问题讨论】:

    标签: python pandas datetime long-integer


    【解决方案1】:

    这些是一系列融化和旋转命令。我不确定它是否是最佳的,但它可以到达你想要的地方。另外,也许使用pd.to_datetime 来确保您的“时间戳”列是日期时间格式。

    df = pd.DataFrame({"Kharid-et_Heat" : {0 : "a", 1 : "b", 2 : "c"},
                       "Kharid-et_Humidity" : {0 : "d", 1 : "e", 2 : "f"},
                       "Zzetek_Heat" : {0 : 2.5, 1 : 1.2, 2 : .7},
                       "Zzetek_Humidity" : {0 : 3.2, 1 : 1.3, 2 : .1}
                      })
    df["Timestamp"] = [datetime.datetime(2021, 3, 15, 11, 9, 15), datetime.datetime(2021, 3, 16, 11, 9, 15),\
                datetime.datetime(2021, 3, 17, 11, 9, 15)]
    
    df["Timestamp"]=pd.to_datetime(df["Timestamp"])
    
    df=pd.wide_to_long(df, stubnames=['Kharid-et','Zzetek'], i=["Timestamp"], j="Parameter",sep='_', suffix='\w+')\
        .reset_index(level=[0,1])
    
    df1=df.melt(id_vars=["Timestamp", "Parameter"], value_vars=["Kharid-et", "Zzetek"])\
         .pivot(index=["Timestamp", "variable"], columns="Parameter", values="value")\
         .sort_index(level=[0,1])\
         .reset_index(level=1)
    
    print(df1)
    

    输出

    Parameter             variable Heat Humidity
    Timestamp                                   
    2021-03-15 11:09:15  Kharid-et    a        d
    2021-03-15 11:09:15     Zzetek  2.5      3.2
    2021-03-16 11:09:15  Kharid-et    b        e
    2021-03-16 11:09:15     Zzetek  1.2      1.3
    2021-03-17 11:09:15  Kharid-et    c        f
    2021-03-17 11:09:15     Zzetek  0.7      0.1
    

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2015-12-28
      • 2016-10-05
      • 2019-04-03
      • 2014-12-09
      • 2012-08-31
      相关资源
      最近更新 更多