仅使用公共列

时间:2016-10-04 22:21:23

标签: python pandas dataframe

我有多个pandas数据框对象cost1,cost2,cost3 ....

  1. 它们具有不同的列名(和列数)但有一些共同点。
  2. 每个数据框中的列数相当大,因此手动挑选公共列会很痛苦。
  3. 如何将所有这些数据帧中的行追加到一个数据帧中 同时只保留常用列名的元素?

    截至目前我已经

    帧= [COST1,cost2,COST3 ...]

    new_combined = pd.concat(frames,ignore_index = True)

    这显然包含在所有数据框中不常见的列。

2 个答案:

答案 0 :(得分:6)

您可以使用Python set.intersection找到常用列:

common_cols = list(set.intersection(*(set(df.columns) for df in frames)))

要仅使用公共列进行连接,可以使用

pd.concat([df[common_cols] for df in frames], ignore_index=True)

答案 1 :(得分:0)

对于将来的读者来说,上述功能可以由熊猫本身实现。 如果在pd.concat中提供join ='inner'参数,则熊猫只能在保留公共列的同时合并数据框。例如

pd.concat(frames,join='inner', ignore_index=True)