用Pandas合并两个数据框

28 投票
3 回答
31852 浏览
提问于 2025-04-17 04:22

当我尝试通过行合并两个数据框时,使用了以下代码:

bigdata = data1.append(data2)

结果出现了以下错误:

Exception: Index cannot contain duplicate values!

第一个数据框的索引是从0到38,第二个数据框的索引是从0到48。我没有明白在合并之前需要修改其中一个数据框的索引,但我不知道该怎么做。

谢谢。

这两个数据框是:

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 

第一列是索引

3 个回答

0

试试用 pd.concat 这个方法。

bigdata = pd.concat([data1,data2])
1

你可以先用 groupby 方法找出那些索引重复的行(不是值重复),然后对所有这些重复索引的行进行求和或求平均的操作。

data1 = data1.groupby(data1.index).sum()
data2 = data2.groupby(data2.index).sum()
44

这个 append 函数有一个可选的参数叫 ignore_index,你可以在这里使用它来把记录合并在一起,因为在你的应用中,索引并没有什么特别的意义。

撰写回答