将多个 DataFrame 与非标准列连接起来
Concatenating Multiple DataFrames with Non-Standard Columns
有没有一种好的方法来连接 DataFrame 之间的列不规则的 DataFrame 列表?
期望的结果是匹配所有匹配的列,但将不匹配的列保留在一边。您希望保留不匹配列的原因是因为虽然列表中第一个和第二个数据帧之间的给定列可能不匹配,但第一个和第三个数据帧之间可能存在匹配。因此,在第一次缺少匹配时过早地丢弃是不理想的。
例子是:
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
data=pd.concat(datalist,join='outer', axis=0, ignore_index=True)
这行得通。我最初的印象是,应用了 join="outer" 参数的 concat 只会直接向上和向下追加,而不考虑列名。实际上,当应用 join="outer" 参数时,它将合并它可以匹配的列,但随后将所有不匹配的列保留在 DF 的一侧,这正是我们所需要的。希望这对其他人有帮助。
有没有一种好的方法来连接 DataFrame 之间的列不规则的 DataFrame 列表?
期望的结果是匹配所有匹配的列,但将不匹配的列保留在一边。您希望保留不匹配列的原因是因为虽然列表中第一个和第二个数据帧之间的给定列可能不匹配,但第一个和第三个数据帧之间可能存在匹配。因此,在第一次缺少匹配时过早地丢弃是不理想的。
例子是:
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
data=pd.concat(datalist,join='outer', axis=0, ignore_index=True)
这行得通。我最初的印象是,应用了 join="outer" 参数的 concat 只会直接向上和向下追加,而不考虑列名。实际上,当应用 join="outer" 参数时,它将合并它可以匹配的列,但随后将所有不匹配的列保留在 DF 的一侧,这正是我们所需要的。希望这对其他人有帮助。