Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较两个日期框和设置值_Python_Pandas_Loops_Series - Fatal编程技术网

Python 比较两个日期框和设置值

Python 比较两个日期框和设置值,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

我有一个问题,我不确定应该使用什么函数来执行它。我有两个日期框,如果其中一个(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 

提前感谢

如果两个
数据框
具有相同的索引和列值,并且所有数据都是数字,请使用:

详情:

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'并且它可以工作。=]