【问题标题】:append two data frame with pandas用熊猫附加两个数据框
【发布时间】:2021-09-21 15:04:18
【问题描述】:

当我尝试按行合并两个数据框时:

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 

第一列是索引

【问题讨论】:

  • 能否请您发布两个dataframe 对象的快照(即在python 解释器中,输入dataframe 的名称,以便在屏幕上枚举对象)。还要发布您在执行合并时使用的关键字。正如您所看到的pandas.sourceforge.net/dataframe.html,有几种方法可以组合数据帧...确保您使用的是最适合您要完成的工作的一种
  • 这是两个数据框的打印:
  • 很抱歉,我仍然没有在此网页中看到data1data2 的内容...请将它们编辑成原始问题
  • 对不起,我没有很好地处理演示文稿
  • 数据框在这里 [docs.google.com/…

标签: python pandas


【解决方案1】:

append 函数有一个可选参数 ignore_index,您应该在这里使用它来将记录连接在一起,因为索引对您的应用程序没有意义。

【讨论】:

    【解决方案2】:

    您可以首先使用groupby 方法识别索引重复(不是值)行,然后对具有重复索引的所有行进行求和/均值运算。

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

    【讨论】:

    • 我用 panel = panel1.append(panel2) 欺骗了我。然后这删除了它们: panel = panel.groupby(panel.index).sum() 所以谢谢。 (我被告知我正在使用面板,而不是数据框,如何知道)
    【解决方案3】:

    尝试使用pd.concat

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

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      相关资源
      最近更新 更多