0
我想乘以一个DataFrame与系列,其中DataFrame具有完全相同的系列索引,尽管有重复的索引值。期望的结果是DataFrame中的每一行都会根据索引的值乘以Series中的相应值。乘以一个DataFrame与重复的索引值
乘以重复的索引值的一系列完美的作品:
import pandas as pd
weights = pd.Series([10, 100], [0, 1])
s = pd.Series([1, 2, 3, 4], [0, 0, 1, 1])
s.mul(weights)
产生预期的结果:
0 10
0 20
1 300
1 400
乘以重复的索引值的数据帧,但是,产生ValueError异常:不能重新编制来自复制轴:
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [-1, -2, -3, -4]}, [0, 0, 1, 1])
df.mul(weights, axis=0)
...
ValueError: cannot reindex from a duplicate axis
我如何获得以下结果?
a b
0 10 -10
0 20 -20
1 300 -300
1 400 -400
编辑:
一种选择是第一系列重新索引权重:
df.mul(weights.reindex(df.index, method='ffill'), axis=0)