2011-10-15 138 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