Python 比较两个日期框和设置值
我有一个问题,我不确定应该使用什么函数来执行它。我有两个日期框,如果其中一个(finaldf)中的值高于另一个(dfres0)中的值,我想比较两个,如果是,我想在(finaldf)中设置为零。以下是此日期框的一些示例: finaldfPython 比较两个日期框和设置值,python,pandas,loops,series,Python,Pandas,Loops,Series,我有一个问题,我不确定应该使用什么函数来执行它。我有两个日期框,如果其中一个(finaldf)中的值高于另一个(dfres0)中的值,我想比较两个,如果是,我想在(finaldf)中设置为零。以下是此日期框的一些示例: finaldf .. NEG_00_04 NEG_04_08 NEG_08_12 NEG_12_16 NEG_16_20 NEG_20_24 \ datum_von
.. 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
提前感谢如果两个
数据框
具有相同的索引和列值,并且所有数据都是数字,请使用:
详情:
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
编辑:
如果列相同,唯一的区别是dfres0
中的produktname
列,然后首先将其删除:
df = finaldf.mask(finaldf > dfres0.drop('produktname', axis=1), 0)
如果两个
DataFrame
具有相同的索引和列值,并且所有数据都是数字,则使用:
详情:
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
编辑:
如果列相同,唯一的区别是dfres0
中的produktname
列,然后首先将其删除:
df = finaldf.mask(finaldf > dfres0.drop('produktname', axis=1), 0)
可以
打印(finaldf==dfres0)
?@jezrael如果它们等于,则应保持不变日期框finaldfI中的值是否返回布尔掩码
或值错误:只能比较标记相同的数据框对象
@jezrael比较主要是为了知道finaldf中的哪些值会高于dfres0中的值可以使用设置为零的值创建新的finaldf。它们确实具有相同的长度和信息,但可能在finaldf中缺少一个列名作为prodktname,这是可能的print(finaldf==dfres0)
?@jezrael如果它们等于,则应保持不变日期框finaldfI中的值是否返回布尔掩码
或值错误:只能比较标记相同的数据框对象
@jezrael比较主要是为了知道finaldf中的哪些值会高于dfres0中的值可以使用设置为零的值创建新的finaldf。它们确实有相同的长度和信息,但可能在finaldf中缺少了一个列名ProdKTname。我从你身上学到了多少!我总是认为解决这个问题很难,但是python总是有一个更容易的。谢谢你回答我的问题。我真的很感激,有一个问题,我可以把dfres0中的列的索引设置为produktname吗?因此,它们在两个日期框架中都有相同的名称使用finaldf=finaldf.set_index(dfres0['produktname',append=True)
然后df=finaldf.mask(finaldf>dfres0.set_index('produktname',append=True),0)
实际上我做了以下工作;finaldf.columns.name='produktname'并且它可以工作。=]令人惊讶的是,我从你身上学到了多少!我总是认为解决这个问题很难,但是python总是有一个更容易的。谢谢你回答我的问题。我真的很感激,有一个问题,我可以把dfres0中的列的索引设置为produktname吗?因此,它们在两个日期框架中都有相同的名称使用finaldf=finaldf.set_index(dfres0['produktname',append=True)
然后df=finaldf.mask(finaldf>dfres0.set_index('produktname',append=True),0)
实际上我做了以下工作;finaldf.columns.name='produktname'并且它可以工作。=]