所以,我是 Pandas 的初學者,我在作業時遇到了一些麻煩。
我的任務是給我一個資料框,如下所示:
| 動物ID | 愛稱 | 寵物型別 |
|---|---|---|
| 1 | 胡須 | 貓 |
| 2 | 查理 | 狗 |
| 3 | 點 | 狗 |
| 4 | 蜂蜜 | 貓 |
如果寵物型別是狗,我正在嘗試做的是在 ID 的末尾添加一個“ ”符號。
我的解決方案是使用 iterrows() 遍歷每一行并檢查寵物型別是否匹配,如果匹配,則更改該行中的 ID。我的代碼如下:
import pandas as pd
#df = pd.read_excel('AnimalList.xlsx')
df = pd.DataFrame({'AnimalID':[1,2,3,4], 'Pet Name':['Whiskers', 'Charlie', 'Spot', 'Honey'], 'Pet Type':['Cat', 'Dog', 'Dog', 'Cat']})
for row in df.iterrows():
if row['Pet Type'].eq('Dog').any():
row['AnimalID'] = df['AnimalID'].astype(str) ' '
df
資料框列印沒有錯誤,但有什么理由沒有改變嗎?我必須遺漏一些明顯的東西。謝謝你。
uj5u.com熱心網友回復:
您可以申請Series.where列AnimalID。它的值將在條件所在的地方被替換False,因此我們需要檢查是否為該列等于的每一行Series.ne添加。 Dog
df['AnimalID'] = df['AnimalID'].where(df['Pet Type'].ne('Dog'),
df['AnimalID'].astype(str) ' ')
print(df)
AnimalID Pet Name Pet Type
0 1 Whiskers Cat
1 2 Charlie Dog
2 3 Spot Dog
3 4 Honey Cat
uj5u.com熱心網友回復:
這是使用面具的一種方法
# when condition is true, add to the ID
df['AnimalID']=(df['AnimalID'].mask(df['Pet Type'].eq('Dog'),
df['AnimalID'].astype(str) (' ')))
df
AnimalID Pet Name Pet Type
0 1 Whiskers Cat
1 2 Charlie Dog
2 3 Spot Dog
3 4 Honey Cat
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525437.html
標籤:Python熊猫数据框
