基于要连接的多个DataFrame的索引值构造索引

时间:2018-02-01 15:26:16

标签: python pandas dataframe indexing left-join

我需要将多个DataFrame合并为一个。所有这些都有整数索引,我想在结果中保留。

示例:

df_1

     a
  0  1
  1  3
  5  10
  7  2

df_2

     b
  2  4
  4  11
  7  3
  9  4

结果:

     a    b
  0  1    -
  1  3    -
  2  -    4
  4  -    11
  5  10   -
  7  2    3
  9  -    4

到目前为止,我一直在使用这种方法,我想知道是否有更清洁的解决方案:

dfs = [df_1, df_2, ...]
join_index = list()
for df in dfs:
    join_index.extend(df.index.tolist())
join_index = sorted(list(set(join_index)))

然后在将DataFrames连接在一起时使用join_index。

1 个答案:

答案 0 :(得分:1)

使用concat,索引是DataFramelist s的所有索引的并集,也是排序的:

dfs = [df_1, df_2]
df = pd.concat(dfs, axis=1)
print (df)
      a     b
0   1.0   NaN
1   3.0   NaN
2   NaN   4.0
4   NaN  11.0
5  10.0   NaN
7   2.0   3.0
9   NaN   4.0