2
我有一個熊貓據幀,DF,如:Python的大熊貓:更新行基於另一個行值
name | grade | grade_type
---------------------------
sarah | B | letter
alice | A | letter
eliza | C | letter
beth | 76 | numeral
jones | 90 | numeral
在df
所有值都是字符串,包括數字。我想了grade
數值爲字母轉換的基礎上,檢查grade_type
列,得到:
name | grade | grade_type
---------------------------
sarah | B | letter
alice | A | letter
eliza | C | letter
beth | B | numeral
jones | A | numeral
爲了完整,數字到字母等級轉換爲:
A: grade > 80
B: 70 < grade <= 80
C: 60 < grade <= 70
爲什麼沒有按這項工作?
for index, row in df.iterrows():
if row.grade_type == "numeral":
grade_val = int(row.grade.values[0])
if grade_val > 80:
row.grade = "A" # This assignment doesn't update row.grade!
elif...
另一種方法是使用df.apply(...lambda:...)
,但我不太知道如何實現自己的目標,因爲我們在決定是否更新grade
值前檢查grade_type
列。