2011-10-15 46 views
25

兩個數據幀當我嘗試按行合併兩個dataframes做:追加與大熊貓

bigdata = data1.append(data2) 

我收到以下錯誤:

Exception: Index cannot contain duplicate values! 

第一數據幀的索引從0開始到38,第二個從0到48.我不明白在合併之前我必須修改其中一個數據幀的索引,但我不知道如何去做。

謝謝。

這是兩個dataframes:

data1

meta particle ratio area type  
0 2  part10 1.348 0.8365 touching 
1 2  part18 1.558 0.8244 single 
2 2  part2  1.893 0.894 single 
3 2  part37 0.6695 1.005 single 
....clip... 
36 2  part23 1.051 0.8781 single 
37 2  part3  80.54 0.9714 nuclei 
38 2  part34 1.071 0.9337 single 

data2

meta particle ratio area type  
0 3  part10 0.4756 1.025 single 
1 3  part18 0.04387 1.232 dusts 
2 3  part2  1.132 0.8927 single 
...clip... 
46 3  part46 13.71 1.001 nuclei 
47 3  part3  0.7439 0.9038 single 
48 3  part34 0.4349 0.9956 single 

第一列是索引

+0

能否請您發佈兩個'dataframe'對象的快照(即在Python解釋器,在'dataframe'的名稱類型,從而使物體在屏幕上列舉)。同時發佈您在執行合併時使用的關鍵字。正如你可以看到http://pandas.sourceforge.net/dataframe.html,有幾種方法可以合併數據框......確保你使用的是對你想要完成的事情最有意義的方法 –

+0

這裏是兩個數據框的打印: –

+0

對不起,但我仍然沒有看到這個網頁中的'data1'和'data2'的內容...請編輯它們到原始問題 –

回答

40

append函數有一個可選參數ignore_index你應該在這裏使用它們將這些記錄加在一起,因爲索引對你的應用程序沒有意義。

+0

謝謝,我會試試 –

+0

@ Jean-Pat:爲什麼不接受答案? –

1

您可以首先使用groupby方法確定索引重複(非值)行,然後對所有具有重複索引的行執行求和/平均操作。

data1 = data1.groupby(data1.index).sum() 
data2 = data2.groupby(data2.index).sum() 
+0

我有面板= panel1.append(面板2)。然後這刪除了它們:panel = panel.groupby(panel.index).sum()So thx。 (我被告知我正在使用面板,而不是數據框,如何知道) – gseattle