我有一个问题,我不确定应该使用什么功能来执行它。我有两个日期框架,如果一个(finaldf)中的值高于另一个(dfres0)中的值,我想要两个比较,如果它们是我想在(finaldf)中设置为零。以下是此日期框架的示例:
finaldf
.. NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 \
datum_von
2017-10-18 9.58 8.08 0.39 2.32 0.54 0.60
2017-10-19 6.34 6.20 0.15 1.32 0.46 0.56
2017-10-20 7.68 5.86 0.29 1.04 0.48 0.54
2017-10-21 13.40 10.52 2.50 3.09 2.97 2.44
2017-10-22 25.53 17.33 4.05 12.62 2.35 1.14
dfres0
... produktname NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 \
datum_von
2017-10-18 12.440 11.012 0.604 4.189 0.900 0.912
2017-10-19 10.144 8.880 0.465 2.700 0.740 0.832
2017-10-20 10.370 8.280 0.394 1.970 0.694 0.732
2017-10-21 14.207 10.800 1.940 2.940 2.334 2.164
2017-10-22 24.750 20.285 3.900 18.241 2.476 1.870
提前致谢
答案 0 :(得分:5)
如果两个DataFrame
都有相同的索引和列值,并且所有数据都是数字使用here:
df = finaldf.mask(finaldf > dfres0, 0)
print (df)
NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24
datum_von
2017-10-18 9.58 8.08 0.39 2.32 0.54 0.60
2017-10-19 6.34 6.20 0.15 1.32 0.46 0.56
2017-10-20 7.68 5.86 0.29 1.04 0.48 0.54
2017-10-21 13.40 10.52 0.00 0.00 0.00 0.00
2017-10-22 0.00 17.33 0.00 12.62 2.35 1.14
详情:
print (finaldf > dfres0)
NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24
datum_von
2017-10-18 False False False False False False
2017-10-19 False False False False False False
2017-10-20 False False False False False False
2017-10-21 False False True True True True
2017-10-22 True False True False False False
编辑:
如果列相同,produktname
中只有dfres0
列的差异,请先将其删除:
df = finaldf.mask(finaldf > dfres0.drop('produktname', axis=1), 0)