iT邦幫忙

0

找出欄位中某個群組的最大値_python

  • 分享至 

  • xImage

我想要找尋某種房型的最高成交價。第一種方式可行,但是當我套到第二種方式時,卻產生錯誤訊息。想請板上各位前輩幫我看一下! 謝謝!

第一種方式

bond=pd.read_csv('./content/data.csv',  index_col='h_type')
a=bond.loc['mansion']
aMax=a.sort_values(['h_price'],ascending=False).head(1)

第二種方式

bond=pd.read_csv('./content/data.csv,'  index_col='h_type')

if bond.loc['mansion']:      #<= 這裡出現錯誤
  idMax = priceSr.idxmax()
  if  not isnan(idMax): 
    maxSr = df.loc[idMax]
    if most is None:
      most = maxSr.copy()
    else:
      if float(maxSr['h_price']) > float(most['h_price']):
        most = maxSr.copy()

most = most.to_frame().transpose()
print(most, '\n==========') 

錯誤訊息:

  1536     def __nonzero__(self):
   1537         raise ValueError(
-> 1538             f"The truth value of a {type(self).__name__} is ambiguous. "
   1539             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
   1540         )

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
davidho27941
iT邦新手 5 級 ‧ 2022-12-01 10:08:26
最佳解答

在Python的if判斷中,用以判斷的表達式必須回傳True/False才能讓if進行判斷。
閣下將一個陣列的物件傳遞給if進行判斷,自然會出錯的。

謝謝回覆! 我試著把那一句改成if "mansion" in bond.loc['mansion']: 判斷True 値,結果出現如下訊息(不曉得這句錯誤是什麼)

   3361                 return self._engine.get_loc(casted_key)
   3362             except KeyError as err:
-> 3363                 raise KeyError(key) from err
   3364 
   3365         if is_scalar(key) and isna(key) and not self.hasnans:

KeyError: 'mansion'

bond.loc['mansion']給出來的是"mansion"欄位中的所有資料,"mansion"這個詞當然不在其中。建議先對資料本身的結構仔細了解一下。

我要發表回答

立即登入回答