2012-07-09 65 views
3

我在擺動熊貓時遇到了一些麻煩。該dataframe(日期,地點,數據),我的工作看起來像:大熊貓擺動一個數據幀,重複行

dates location data 
date1  A   X 
date2  A   Y 
date3  A   Z 
date1  B   XX 
date2  B   YY 

基本上,我試圖在轉動的位置,就像一個數據幀到結束:

dates A B C 
date1 X XX etc... 
date2 Y YY 
date3 Z ZZ 

不幸當我轉動,指數,這相當於原來的日期欄,並沒有改變,我得到:

dates A B C 
date1 X NA etc... 
date2 Y NA 
date3 Z NA 
date1 NA XX 
date2 NA YY 

有誰知道我該如何解決這個問題,以獲得數據幀甲 我在找?

我當前調用樞軸這樣:

df.pivot(index="dates", columns="location") 

,因爲我有數據列我想轉動的#(不想列出每一個作爲參數)。我相信,默認情況下,pivot會樞轉數據框中的其餘列。 謝謝。

+0

請使用正確的格式。閱讀此[如何格式化](http://stackoverflow.com/editing-help) – 2012-07-09 17:39:52

回答

1

你是怎麼調用DataFrame.pivot和你的日期列是什麼數據類型的?

假設我有一個數據幀,它類似於你的,日期列包含datetime對象:

In [52]: df 
Out[52]: 
     data    dates loc 
0 0.870900 2000-01-01 00:00:00 A 
1 0.344999 2000-01-02 00:00:00 A 
2 0.001729 2000-01-03 00:00:00 A 
3 1.565684 2000-01-01 00:00:00 B 
4 -0.851542 2000-01-02 00:00:00 B 


In [53]: df.pivot('dates', 'loc', 'data') 
Out[53]: 
loc    A   B 
dates       
2000-01-01 0.870900 1.565684 
2000-01-02 0.344999 -0.851542 
2000-01-03 0.001729  NaN 
+0

我實際上調用df.pivot沒有第三個參數,因爲在我的實際數據中,我有一個數據列,我想支配他們所有的人。那會是它的一部分嗎? – tomas 2012-07-10 13:29:48

+0

您的日期欄中實際上是什麼?它看起來像是被視爲彼此獨特的價值觀。 – 2012-07-10 14:17:57

3

如果你有多個數據列,稱沒有值的列支點應該給你一個多指標一個樞軸轉動架作爲列:

In [3]: df 
Out[3]: 
    columns  data1  data2 index 
0  a -0.602398 -0.982524  x 
1  a 0.880927 0.818551  y 
2  b -0.238849 0.766986  z 
3  b -1.304346 0.955031  x 
4  c -0.094820 0.746046  y 
5  c -0.835785 1.123243  z 

In [4]: df.pivot('index', 'columns') 
Out[4]: 
      data1       data2      
columns   a   b   c   a   b   c 
index                
x  -0.602398 -1.304346  NaN -0.982524 0.955031  NaN 
y  0.880927  NaN -0.094820 0.818551  NaN 0.746046 
z    NaN -0.238849 -0.835785  NaN 0.766986 1.123243 
+0

是的,我看到這些信息是以multiindex的形式出現的,但是我也遇到了同樣的問題,熊貓似乎認識到所有的日期都是獨一無二的,我得到了一堆Nans。即使我將pivot參數值設置爲C列,我仍然可以得到與我原始表中相同的行數,對於所有重複日期,只需使用Nans。 – tomas 2012-07-10 15:18:14

1

剛剛回答我自己的問題。我使用舊的Sybase模塊導入數據,我認爲它使用了mxDatetime中的舊DateTimeType對象。在該模塊中,2011年1月1日的日期時間不一定等於2011年1月1日的另一個日期時間(例如,每個日期時間是唯一的)。因此,數據幀主鍵將每個列值視爲索引中的唯一值。

感謝您的幫助。