多个pandas数据帧的交集

时间:2016-11-10 17:17:02

标签: python pandas

我在列表中有许多数据框:

frameList = [df1,df2,..,df100]

每个数据框由第一列"DateTime"组成,第二列为"Temperature"

如何通过在DateTime上交叉来查找列表中所有数据框的公共温度列。使用pandas merge不会起作用,因为我必须多次重做成对交叉。

编辑:

我认为单词merge令人困惑,将列标题更改为只有交集。

编辑:

我的最终输出应该是DateTime作为第一列,然后是来自df1的温度,来自df2的温度,来自df3的温度,..,来自df100的温度。

3 个答案:

答案 0 :(得分:3)

使用pd.concat,它适用于DataFrame或系列列表。

pd.concat(frameList, axis=1, join='inner')

这比使用pd.merge要好,因为pd.merge会在每次执行时成对复制数据。 pd.concat只复制一次。但是,pd.concat仅基于轴进行合并,而pd.merge也可以合并(多个)列。

答案 1 :(得分:2)

你可以尝试在python中使用reduce功能......像这样的东西

runif

答案 2 :(得分:2)

你可以像这样迭代你的列表:

df_merge = frameList[0]
for df in frameList[1:]:       
    df_merge = pd.merge(df_merge, df, on='DateTime', how='inner')