This question already has answers here:
Pandas DataFrame: replace all values in a column, based on condition
                                
                                    (4个答案)
                                
                        
                                9个月前关闭。
            
                    
我有一个PandaDataframe,其中包含有关许多已下订单及其时间的信息。此数据适用于从11:00 am-1:00 am开始营业的餐厅。

dataFrame的名称为“ DfPayments”。

它有两列DfPayments ['hour']和DfPayments ['day'],其中包含有关下订单的日期和小时的信息。在汇总日销售量时,在午夜之后下达的某些订单将计入第二天的销售量。因此,我想为小时创建一个新变量,并使用它来相应地调整销售额。但是,当我使用以下代码时,出现错误。

if DfPayments['hour'] == 0:
    DfPayments['newhour'] = DfPayments['newhour'] - 1


错误是:


  ---> 18,如果DfPayments ['hour'] == 0:
       19 DfPayments ['newhour'] = DfPayments ['newhour']-1
  
  1574提高ValueError(“ {0}的真值不明确。
  “ 1575”使用a.empty,a.bool(),a.item(),
  a.any()或a.all()。”
  -> 1576 .format(self.class.name))1577 1578 bool =非零

最佳答案

使用布尔索引:

idx = DfPayments['hour']==0
DfPayments.loc[idx, 'newhour'] = DfPayments.loc[idx, 'newhour'] - 1

09-27 20:47