我在这个问题上要做的是使用以下日期框架:
product NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 \
datum_von
2017-10-21 0.703110 0.518214 0.956835 2.292035 0.179191 0.120000
2017-10-22 0.421140 0.246904 0.680147 0.830645 0.647059 0.484848
2017-10-23 0.222753 0.240493 0.298851 0.293651 0.291667 0.205882
如果这些数字高于0.5,则保持相同并乘以另一个日期框架(下方)中的对应方但如果该值低于0.5,则应从1减去上述对应值,然后也只将相应的值乘以日期框(下图)。
这是用于使用上面的过滤日期框架进行乘法过程的日期框架
productname NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 \
datum_von
2017-10-21 10.61 8.51 1.39 2.26 1.73 1.50
2017-10-22 18.07 12.92 2.72 7.44 2.04 1.32
2017-10-23 10.46 9.73 0.87 1.26 0.72 0.68
我确信在python中有一种简单的方法可以做到这一点,我还是不高兴。提前谢谢!
答案 0 :(得分:3)
使用df.where
替换值,连续并通过对相似列进行分组来对它们进行分组。
ndf = df2.where(df1>0.5,df2+1)
x = pd.concat([ndf,df1],1)
new = x.groupby(by=x.columns,axis=1).apply(lambda x: x.iloc[:,0]*x.iloc[:,1])
NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 datum_von 2017-10-21 7.459997 4.410001 1.330001 5.179999 0.489191 0.300000 2017-10-22 8.031140 3.436904 1.850000 6.179999 1.320000 1.124847 2017-10-23 2.552749 2.580490 0.558851 0.663651 0.501667 0.345882
答案 1 :(得分:2)
我的猜测是你正在寻找np.where
:
np.where(df1 < 0.5, df2 + 1, df2) * df1
NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24
2017-10-21 7.459997 4.410001 1.330001 5.179999 0.489191 0.300000
2017-10-22 8.031140 3.436904 1.850000 6.179999 1.320000 1.124847
2017-10-23 2.552749 2.580490 0.558851 0.663651 0.501667 0.345882