合并和转换两个pandas数据帧

时间:2016-02-12 07:45:03

标签: python pandas dataframe data-analysis

我有两个pandas数据框:

格式之一:

type sum date
x1   12  01/01/12
x2   10  01/01/12
x3   8   01/01/12
x1   13  02/01/12
x2   12  02/01/12
x3   55  02/01/12
x1   11  03/01/12
x2   10  03/01/12
x3   8   03/01/12

和另一种格式

total date
122   01/01/12
133   02/01/12
144   03/01/12

将这些组合起来的最简单方法是什么,以便我得到以下输出:

date     x1 x2 x3 total
01/01/12 12 10 8  122
02/01/12 13 12 55 133
03/01/12 11 10 8  144

我已经尝试了很多功能,这些功能变得非常混乱,非常快,似乎无法正常工作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您可以将pivotdf1set_indexdf2一起使用,然后将concatreset_index一起使用。最后,您可以删除columns nameto_datetime

print df1.pivot(index='date', columns='type', values='sum')
type        x1  x2  x3
date                  
2012-01-01  12  10   8
2012-02-01  13  12  55
2012-03-01  11  10   8

print df2.set_index('date')
            total
date             
2012-01-01    122
2012-02-01    133
2012-03-01    144

df = pd.concat([df1.pivot(index='date', columns='type', values='sum'), 
                df2.set_index('date')], axis=1)
df.columns.name = None
df = df.reset_index()
print df
        date  x1  x2  x3  total
0 2012-01-01  12  10   8    122
1 2012-02-01  13  12  55    133
2 2012-03-01  11  10   8    144

也许在你可以转换date的{​​{1}} {{3}}列之前:

DataFrames