pandas 中的向量化点积?
Vectorized dot product in pandas?
我有两个数据帧,df1 按日期索引并包含 products/entries A、B、...的一些数值 val1、val2:
Date entry val1 val2
2017-04-12 A 1 10
2017-04-12 B 2 10
2017-04-12 C 3 10
2017-04-13 A 1 20
2017-04-13 B 2 20
2017-04-13 D 3 20
df2 具有每个日期的每个值的系数:
2017-04-12 2017-04-13
val1 4 6
val2 5 7
是否有一种很好的向量化方法来获取 df1 中的值与 df2 中的系数的点积?输出看起来像:
Date entry result
2017-04-12 A 54
2017-04-12 B 58
2017-04-12 C 62
2017-04-13 A 146
2017-04-13 B 152
2017-04-13 D 158
我知道循环日期有效。
使用DataFrame.mul
with MultiIndex in df1
with transpose df2
, then sum
per rows and convert MultiIndex Series
by Series.reset_index
到DataFrame
:
df = (df1.set_index(['Date','entry'])
.mul(df2.T, level=0)
.sum(axis=1)
.reset_index(name='result'))
print (df)
Date entry result
0 2017-04-12 A 54
1 2017-04-12 B 58
2 2017-04-12 C 62
3 2017-04-13 A 146
4 2017-04-13 B 152
5 2017-04-13 D 158
我有两个数据帧,df1 按日期索引并包含 products/entries A、B、...的一些数值 val1、val2:
Date entry val1 val2
2017-04-12 A 1 10
2017-04-12 B 2 10
2017-04-12 C 3 10
2017-04-13 A 1 20
2017-04-13 B 2 20
2017-04-13 D 3 20
df2 具有每个日期的每个值的系数:
2017-04-12 2017-04-13
val1 4 6
val2 5 7
是否有一种很好的向量化方法来获取 df1 中的值与 df2 中的系数的点积?输出看起来像:
Date entry result
2017-04-12 A 54
2017-04-12 B 58
2017-04-12 C 62
2017-04-13 A 146
2017-04-13 B 152
2017-04-13 D 158
我知道循环日期有效。
使用DataFrame.mul
with MultiIndex in df1
with transpose df2
, then sum
per rows and convert MultiIndex Series
by Series.reset_index
到DataFrame
:
df = (df1.set_index(['Date','entry'])
.mul(df2.T, level=0)
.sum(axis=1)
.reset_index(name='result'))
print (df)
Date entry result
0 2017-04-12 A 54
1 2017-04-12 B 58
2 2017-04-12 C 62
3 2017-04-13 A 146
4 2017-04-13 B 152
5 2017-04-13 D 158