簡體   English   中英

需要幫助使用 Loc 來分類和替換數字

[英]Need help using Loc to bin and replace numbers

我有一列帶有數值。 我想確定列中的數字是高於還是低於數字 30,如果高於或低於 30,則將其替換為 1,如果低於則替換為 0。 我目前正在使用.loc,但我似乎無法弄清楚 | 注釋功能

    kraken = pd.read_csv(data_path + 'ITSM_Master_2020-10-05.csv')
    kraken.loc[[kraken['Incident_Duration']<30, 'high_or_low']=0 | 
    [kraken['Incident_Duration']>=30, 'high_or_low']=1]

類似的東西? 我將數字放入稱為高或低的列中 事件持續時間是一個大列,例如數字范圍為 0-100

  Incident Duration = [25,26,50,52,50,100,5]

一些問題:

  1. 您在loc中的語法。 您正在傳遞一個列表,其中包含 dataframe 和一個字符串,我什至不確定那里發生了什么。 我將在下面展示我通常如何使用loc ,但也許你沒有錯我只是不確定你的問題的根源。
  2. 你不需要| 兩個任務之間。
  3. 其次是 2。您應該在使用loc為其分配值之前啟動列“high_or_low”。 因此,讓我們使用值 0 來啟動它,並將 1 放置在您的條件需要的任何位置。

解決方案:

kraken['high_or_low'] = 0
kraken.loc[kraken['Incident_Duration'] >= 30, 'high_or_low'] = 1

無需使用loc 如果你只是做kraken["Incident_Duration"] >= 30你會得到一個 boolean 系列告訴你,對於每一行,是否滿足條件。 所以剩下的就是將其轉換為01和 append 該系列作為數據框的一列。 您有兩種選擇:

  • 一種是使用 pandas 的astype()方法將系列轉換為 int:
kraken["high_or_low"] = (kraken["Incident_Duration"] >= 30).astype(int)
  • 另一種選擇是乘以 1,這會導致 pandas 將其轉換為int
kraken["high_or_low"] = (kraken["Incident_Duration"] >= 30) * 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM