我有一個這樣的資料框:
df = pd.DataFrame(columns=['Dog', 'Small', 'Adult'])
df.Dog = ['Poodle', 'Shepard', 'Bird dog','St.Bernard']
df.Small = [1,1,0,0]
df.Adult = 0
看起來像這樣:
Dog Small Adult
0 Poodle 1 0
1 Shepard 1 0
2 Bird dog 0 0
3 St.Bernard 0 0
然后我想根據另一列更改一列。我可以這樣做:
df.loc[df.Small == 0, 'Adult'] = 1
但是,我只想為前 3 行這樣做。
我可以選擇前三行:
df.iloc[0:2]
但是,如果我嘗試更改前三行的值:
df.iloc[0:2, df.Small == 0, 'Adult'] = 1
我得到一個錯誤。
如果我合并兩者,我也會得到一個錯誤:
df.iloc[0:2].loc[df.Small == 0, 'Adult'] = 1
它告訴我我正在嘗試在切片的副本上設定一個值。
我應該如何正確地做到這一點?
uj5u.com熱心網友回復:
您可以在.loc選擇中包含范圍作為另一個條件(對于一般情況,我將明確包含 0):
df.loc[(df.Small == 0) & (0 <= df.index) & (df.index <= 2), 'Adult'] = 1
另一種選擇是將索引轉換為系列以使用pd.Series.between:
df.loc[(df.Small == 0) & (df.index.to_series().between(0, 2)), 'Adult'] = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433584.html
標籤:Python python-3.x 熊猫 数据框
上一篇:合并重復但不是全部
