簡體   English   中英

以15分鍾的時間間隔創建新列

[英]Creating new columns at 15 minute time interval

我有一個熊貓數據框df,如下所示。

Date    Hour    Minute  Val
2017-03-01  0   0       126
2017-03-01  0   15      119
2017-03-01  0   30      110
2017-03-01  0   45      56
2017-03-01  1   0       70
2017-03-01  1   15      59
2017-03-01  1   30      50
2017-03-01  1   45      41
2017-03-01  2   0       56
2017-03-01  2   15      63
2017-03-01  2   30      53
2017-03-01  2   45      66
2017-03-01  3   0       64
2017-03-01  3   15      78
2017-03-01  3   30      81
2017-03-01  3   45      79

我必須每隔15分鍾用“ Val”列的值用新列填充數據框。 我想要的輸出應如下所示

Date      Hour Minute Val   T-30 T-15   T   T15  T30  T45
2017-03-01  0   0     126    Na   Na   126  119  110   56
2017-03-01  0   15    119    Na   126  119  110   56   70
2017-03-01  0   30    110    126  119  110  56    70   59
2017-03-01  0   45    56     119  110  56   70    59   50
2017-03-01  1   0     70     110  56   70   59    50   41
2017-03-01  1   15    59     56   70   59   50    41   56
2017-03-01  1   30    50     70   59   50   41    56   63
2017-03-01  1   45    41     59   50    41  56    63   53
2017-03-01  2   0     56     50   41   56   63    53   66
2017-03-01  2   15    63     41   56   63   53    66   64
2017-03-01  2   30    53     56   63   53   66    64   78
2017-03-01  2   45    66     63   53   66   64    78   81
2017-03-01  3   0     64     53   66   64   78    81   79
2017-03-01  3   15    78     66   64   78   81    79   Na
2017-03-01  3   30    81     64   78    81  79    Na   Na
2017-03-01  3   45    79     78    81   79  Na    Na   Na

我嘗試過旋轉原始數據幀以實現所需的輸出,但是該輸出與上述所需的輸出看起來不一樣。

df = df.pivot_table(index=['Date','Hour'], columns='Minute', values='Val').reset_index()
df.columns = ['Date', 'hour', 'T', 'T15', 'T30', 'T45'] 

上面代碼的輸出如下所示。

Date      hour  T   T15     T30   T45
2019-03-01  0   126 119     110   56
2019-03-01  1   70  59      50    41
2019-03-01  2   56  63      53    66
2019-03-01  3   64  78      81    79

我以某種方式無法旋轉保留分鍾和值列以及添加T-15和T-30的表格。

我該如何做呢? 我是python的新手。 任何建議都很好。 提前致謝。

你可以做shift

s=pd.concat([df.Val.shift(x) for x in l],axis=1,keys=['T'+str(-x*15)for x in l])

df=pd.concat([df,s],axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM