用python划分两个数据帧

时间:2016-09-12 16:08:44

标签: python pandas dataframe multiple-columns division

我有两个数据帧:df1和df2

df1:

TIMESTAMP eq1 eq2 eq3
2016-05-10 13:20:00 40 30 10
2016-05-10 13:40:00 40 10 20

df2:

TIMESTAMP eq1 eq2 eq3
2016-05-10 13:20:00 10 20 30
2016-05-10 13:40:00 10 20 20

我想将df1除以df2:df1的每一列都是df2的所有列,以获得此结果df3:

TIMESTAMP eq1 eq2 eq3
2016-05-10 13:20:00 40/(10+10) 30/(20+20) 10/(30+20)
2016-05-10 13:40:00 40/(10+10) 10/(20+20) 20/(30+20)

请问好吗?

2 个答案:

答案 0 :(得分:3)

您可以使用div,但在TIMESTAMPdf1.set_index('TIMESTAMP', inplace=True) df2.set_index('TIMESTAMP', inplace=True) print (df1.div(df2).reset_index()) TIMESTAMP eq1 eq2 eq3 0 2016-05-10 13:20:00 4.0 1.5 0.333333 1 2016-05-10 13:40:00 4.0 0.5 1.000000 之前使用set_index

df1.set_index('TIMESTAMP', inplace=True)
df2.set_index('TIMESTAMP', inplace=True)
print (df2.sum())
eq1    20
eq2    40
eq3    50
dtype: int64

print (df1.div(df2.sum()).reset_index())
            TIMESTAMP  eq1   eq2  eq3
0 2016-05-10 13:20:00  2.0  0.75  0.2
1 2016-05-10 13:40:00  2.0  0.25  0.4

通过评论编辑:

{{1}}

答案 1 :(得分:1)

如果TIMESTAMP不是索引,这应该有效:

>>> df1.set_index('TIMESTAMP').div(df2.set_index('TIMESTAMP').sum()) 
                     eq1   eq2  eq3
TIMESTAMP                          
2016-05-10 13:20:00    2  0.75  0.2
2016-05-10 13:40:00    2  0.25  0.4

如果TIMESTAMP是索引,那么只需:

df1.div(df2.sum())