熊猫:用相同的标签

时间:2016-04-06 14:31:08

标签: python list pandas concat

我在列表中有3个dfs。每个df具有相同的行,但是这些行的顺序不相同。它们按价值排序。

我想将这些dfs连接在一起,但它失败了,因为行标签的顺序不匹配。

我的dfs:

        Total         Total          Total
   sony   5       hond  9        phon  6
   hond   6       sony  3        phon  3
   phon   8       phon  4        hond  2
   phon   3       phon  5        sony  8

以下是尝试连接的方法:

pd.concat(listofdfs, axis=1)

有没有办法连接这些dfs而不对它们进行排序?我认为concat并不关心标签的位置,因为每个df包含相同的标签?

1 个答案:

答案 0 :(得分:1)

我认为这是错误,也许类似于6963

对我来说DataFrames所有df1 = pd.DataFrame({'Total': {'sony': 5, 'phon': 3, 'hond': 6}}) df2 = pd.DataFrame({'Total': {'hond': 9, 'phon': 5, 'sony': 3}}) df3 = pd.DataFrame({'Total': {'hond': 2, 'sony': 8, 'phon': 3}}) df1 = df1.sort_index() df2 = df2.sort_index() df3 = df3.sort_index() listofdfs = [df1,df2,df3] print pd.concat(listofdfs, axis=1) Total Total Total hond 6 9 2 phon 8 4 6 phon 3 5 3 sony 5 3 8 的工作sort_index

sort_index

如果省略concat,则出错:

  

ValueError:传递值的形状为(3,4),索引为暗示(3,3)

似乎unique使用 indexes 索引,如果索引未排序,请参阅下面的内容:

如果numbers替换为df1 = pd.DataFrame({'Total': {1: 5, 2: 6, 3: 3}}) df2 = pd.DataFrame({'Total': {1: 3, 2: 9, 3: 5}}) df3 = pd.DataFrame({'Total': {1: 8, 2: 2, 3: 3}}) print df1 print df2 print df3 Total 1 5 2 6 3 8 3 3 Total 2 9 1 3 3 4 3 5 Total 3 6 3 3 2 2 1 8 df1 = df1.sort_index() df2 = df2.sort_index() df3 = df3.sort_index() listofdfs = [df1,df2,df3] print pd.concat(listofdfs, axis=1) Total Total Total 1 5 3 8 2 6 9 2 3 8 4 6 3 3 5 3

sort_index

但如果省略--commit-filter

  

InvalidIndexError:重新索引仅对具有唯一值的索引对象有效