【发布时间】:2022-12-23 21:40:38
【问题描述】:
我有一个这样的数据框:
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
它告诉我我正在尝试在切片的副本上设置一个值。
我应该如何正确执行此操作?
【问题讨论】:
标签: python python-3.x pandas dataframe