如果df['col1']=='A' then df['col2'].replace('X','Y ',inplace = True)我写了一些类似df[df['col1'] == 'A']['col2'].replace('X','Y',inplace = True)的东西,但它给了我一个错误,我无法解决它。我试图得到一个值在一个列被替换,如果一个条件在另一个列被满足
yzxexxkh1#
问题是inplace=True。您正在尝试这种方式修改“源” Dataframe ,但该 Dataframe 只是另一个 Dataframe 的部分视图(切片),因此它是“只读”的。这有点像df[(df.col1=='A') & (df.col2=='X')]['col2'] = 'Y'失败的原因是相同的:不能修改 Dataframe df[(df.col1=='A') & (df.col2=='X')]的['col2'],因为该 Dataframe 是df的一个切片。你能做的是
inplace=True
df[(df.col1=='A') & (df.col2=='X')]['col2'] = 'Y'
df[(df.col1=='A') & (df.col2=='X')]
['col2']
df
df.loc[(df.col1=='A') & (df.col2=='X'), 'col2'] = 'Y'
1条答案
按热度按时间yzxexxkh1#
问题是
inplace=True
。您正在尝试这种方式修改“源” Dataframe ,但该 Dataframe 只是另一个 Dataframe 的部分视图(切片),因此它是“只读”的。这有点像
df[(df.col1=='A') & (df.col2=='X')]['col2'] = 'Y'
失败的原因是相同的:不能修改 Dataframe
df[(df.col1=='A') & (df.col2=='X')]
的['col2']
,因为该 Dataframe 是df
的一个切片。你能做的是