将多个DataFrame与非标准列连接在一起

时间:2015-03-03 21:54:24

标签: python pandas merge concatenation

是否有一种很好的方法可以连接DataFrame中的列不常规的DataFrame列表?

期望的结果是匹配所有匹配的列,但保留那些没有匹配的列。您希望保留不匹配列的原因是因为虽然列表中第1个和第2个数据帧之间的给定列可能不匹配,但第1个和第3个之间可能存在匹配。因此,在第一次缺乏匹配时过早丢弃将不是理想的。

例如:

print list(datalist[0].columns)
>>>[u'1', u'2', u'3']

print list(datalist[1].columns)
>>>[u'1', u'2', u'4']

print list(datalist[2].columns)
>>>[u'2', u'3', u'4']

输出将是一个数据帧,如(在这里风格表示):

1 2 3 - 
1 2 - 4
- 2 3 4

1 个答案:

答案 0 :(得分:1)

data=pd.concat(datalist,join='outer', axis=0, ignore_index=True)

这很有效。我最初的印象是连接="外部"应用的参数只是直接上下追加而不考虑列名。实际上,当join =" outer"如果应用了参数,它将组合它可以匹配的列,但是将所有不匹配的列保留在DF的一侧,这正是所期望的。希望这有助于其他人。