用 python 划分两个数据帧

Divide two dataframes with python

我有两个数据框:df1df2

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 除以 df2df1 的每一列除以 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)

有什么想法吗?

如果 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()) 

您可以使用两列中的 div, but before set_index TIMESTAMP:

df1.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

通过评论编辑:

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