簡體   English   中英

在Python中將日期作為一行的數據透視

[英]Pivoting data with date as a row in Python

我保留了一種格式的數據,該格式允許我在如下所示的日期上進行透視:

Region                    0              1              2             3
Date                      2005-01-01     2005-02-01     2005-03-01    ....
East South Central        400            500            600
Pacific                   100            200            150
.
.
Mountain                  500            600            450

我需要旋轉這張表,使其看起來像:

0     Date           Region                     value
1     2005-01-01     East South Central         400 
2     2005-02-01     East South Central         500  
3     2005-03-01     East South Central         600  
.
.   
4     2005-03-01     Pacific                    100 
4     2005-03-01     Pacific                    200
4     2005-03-01     Pacific                    150
.
.

由於DateRegion都在另一個之下,我不確定如何melt或圍繞這些字符串pivot ,以便獲得我想要的輸出。

我該怎么辦?

我認為這是您正在尋找的解決方案。 舉例說明。

import pandas as pd
import numpy as np
N=100
regions = list('abcdef')
df = pd.DataFrame([[i for i in range(N)], ['2016-{}'.format(i) for i in range(N)], 
                  list(np.random.randint(0,500, N)), list(np.random.randint(0,500, N)), 
                   list(np.random.randint(0,500, N)), list(np.random.randint(0,500, N))])
df.index = ['Region', 'Date', 'a', 'b', 'c', 'd']
print(df)

這給

            0       1       2       3       4       5       6       7   \
Region       0       1       2       3       4       5       6       7   
Date    2016-0  2016-1  2016-2  2016-3  2016-4  2016-5  2016-6  2016-7   
a           96     432     181      64      87     355     339     314   
b          360      23     162      98     450      78     114     109   
c          143     375     420     493     321     277     208     317   
d          371     144     207     108     163      67     465     130

將其轉換為您想要的形式的解決方案是

df.transpose().melt(id_vars=['Date'], value_vars=['a', 'b', 'c', 'd'])

這使

        Date variable value
0     2016-0        a    96
1     2016-1        a   432
2     2016-2        a   181
3     2016-3        a    64
4     2016-4        a    87
5     2016-5        a   355
6     2016-6        a   339
7     2016-7        a   314
8     2016-8        a   111
9     2016-9        a   121
10   2016-10        a   124
11   2016-11        a   383
12   2016-12        a   424
13   2016-13        a   453
...
393  2016-93        d   176
394  2016-94        d   277
395  2016-95        d   256
396  2016-96        d   174
397  2016-97        d   349
398  2016-98        d   414
399  2016-99        d   132

暫無
暫無

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

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