我有两个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
我已经尝试了很多功能,这些功能变得非常混乱,非常快,似乎无法正常工作。
非常感谢任何帮助。
答案 0 :(得分:3)
您可以将pivot
与df1
,set_index
与df2
一起使用,然后将concat
与reset_index
一起使用。最后,您可以删除columns name
和to_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