簡體   English   中英

Python/Pandas 替換列函數中的值

[英]Python/Pandas Replace Values in a column function

**使用熊貓 1.4.2、Python 3.9.12

我有一個數據集,其中列值表示為 0 或 1,分別代表“否”和“是”。

  Scholarship     Hipertension   Diabetes   Alcoholism  SMS_received    
0     0               1              0          0            0  
1     0               0              0          0            0  
2     0               0              0          0            0  
3     0               0              0          0            0  
4     0               1              1          0            0  

我正在嘗試創建一個自定義函數,分別用“否”和“是”一次性替換 0 和 1。

我在這一點上寫的內容如下:

def replace_values(data_frame, column, being_replaced, replacement_value):
    data_frame[column] = df[column].replace(to_replace=being_replaced, value= 
    replacement_value)
return df

例如,我希望能夠將所有列名以及要替換的值和替換值放入其中,以便該函數一舉完成所有事情。 如:

replace_values(df, [*list_of_columns*], [0, 1], ['No', 'Yes'])

這甚至可能嗎? 我還需要在那里放一個循環嗎? 我已經嘗試了幾次,只有一個列名而不是一個列表,它可以工作,但是不管列如何,它都會用“否”和“是”替換每個 0 和 1,這很好,但不是我想要的去做。 任何幫助表示贊賞。

這里有幾個解決方案。

使用替換:

df.replace({1: 'Yes', 0: 'No'})

使用 where,它保留滿足第一個參數條件的值並將其他所有內容更改為第二個參數的值:

df = df.where(df == 1, 'No')
df = df.where(df == 'No', 'Yes')

使用布爾掩碼:

df[df == 0] = 'No'
df[df == 1] = 'Yes'

這應該適合你:

def replace_values(data_frame):
  return data_frame.astype(bool)

或者因為你希望能夠指定列名,你可以嘗試這樣的事情:

def replace_values(data_frame, list_of_columns):
  for col in list_of_columns:
    data_frame[col] = data_frame[col].astype(bool)
  return data_frame

暫無
暫無

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

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