示例資料
| ID | 性別 | 年齡 |
|---|---|---|
| 1 | F | 22 |
| 2 | 有限元 | 18 |
| 3 | 男性 | 45 |
| 4 | 她/她 | 30 |
| 5 | 男性 | 25 |
| 6 | 非二元論 | 26 |
| 7 | 米 | 18 |
| 8 | 女性 | 20 |
| 9 | 男性 | 56 |
我希望能夠通過將所有帶有“F”的單元格替換為“女性”并將所有帶有“M”的單元格替換為“男性”來在某種程度上標準化這一點。我知道第一步是把整列都改成大寫
df.Gender = df.Gender.str.capitalize()
我知道我可以用
df['Gender'] = df['Gender'].replace(['F', 'Fem', 'Female'], 'Female')
但是有沒有辦法以編程方式做到這一點?
如
df.Gender = df.Gender.str.capitalise()
for i in df.Gender:
if 'F' in str(i):
#pd.replace call something like...
df[df.Gender == i] = 'Female'
#I know that line is very wrong
elif 'M' in str(i)...
任何幫助將非常感激。
uj5u.com熱心網友回復:
嘗試使用正則運算式:
import re
df["Gender"] = df["Gender"].str.replace(
r"^F\S*$", "Female", flags=re.I, regex=True
)
print(df)
印刷:
id Gender Age
0 1 Female 22
1 2 Female 18
2 3 male 45
3 4 She/Her 30
4 5 Male 25
5 6 Non-bianary 26
6 7 M 18
7 8 Female 20
8 9 Male 56
uj5u.com熱心網友回復:
是的,您可以像這樣回圈遍歷 df:
for indx, row in df.iterrows:
if row["Gender"] == "F": #Or other conditions
df.loc[index,"Gender"] = "Female"
else:
pass #or whatever condition u want to add
這是你要求的嗎?雖然這樣做更有效@Andrej Kesely
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525418.html
