2012-10-18 119 views
4

我有一個數據集的排序是這樣的(顯示第一行)列:熊貓:重塑與重複的行名數據

Sample Detector  Cq 
P_1 106 23.53152 
P_1 106 23.152458 
P_1 106 23.685083 
P_1 135  24.465698 
P_1 135  23.86892 
P_1 135  23.723469 
P_1 17 22.524242 
P_1 17 20.658733 
P_1 17 21.146122 

兩個「樣品」和「探測器」列包含重複值(」 Cq「是唯一的):準確地說,每個」檢測器「出現3次,因爲它是數據中的重複。

我需要做的是:

  • 重塑表,以便列包含樣本和行探測器
  • 重命名重複列,讓我知道哪個複製是

我認爲DataFrame.pivot會做的伎倆,但它失敗,因爲重複的數據。最好的方法是什麼?重命名重複,然後重塑,還是有更好的選擇?

編輯:我想過了,我認爲最好說明目的。我需要爲每個「樣本」存儲其「檢測器」的平均值和標準偏差。

回答

6

它看起來像你可能要找的是一個分層索引數據框 [link]

會這樣的工作?

#build a sample dataframe 
a=['P_1']*9 
b=[106,106,106,135,135,135,17,17,17] 
c = np.random.randint(1,100,9) 
df = pandas.DataFrame(data=zip(a,b,c), columns=['sample','detector','cq']) 

#add a repetition number column 
df['rep_num']=[1,2,3]*(len(df)/3) 

#Convert to a multi-indexed DF 
df_multi = df.set_index(['sample','detector','rep_num']) 

#--------------Resulting Dataframe--------------------- 

          cq 
sample detector rep_num  
P_1 106  1  97 
       2  83 
       3  81 
     135  1  46 
       2  92 
       3  89 
     17  1  58 
       2  26 
       3  75 
+0

我今天就去試試看,如果需要的話更新帖子。 – Einar