Python 尽管使用.iloc赋值,数据帧值设置仍带有复制警告

Python 尽管使用.iloc赋值,数据帧值设置仍带有复制警告,python,pandas,dataframe,Python,Pandas,Dataframe,我知道关于设置df切片的值的问题已经在这里得到了彻底的解决 然而,据我所知,我正确地分配了值以不触发警告-这里发生了什么?是否只是使用原始值+1导致了警告 df.iloc[df_row_idx]['n_sites_recruiting'] = df.iloc[df_row_idx]['n_sites'] + 1 这不是正确的语法,您需要提供行和列的索引 df_col_idx = df.columns.get_loc("n_sites_recruiting") df_col_idx2 = d

我知道关于设置df切片的值的问题已经在这里得到了彻底的解决

然而,据我所知,我正确地分配了值以不触发警告-这里发生了什么?是否只是使用原始值+1导致了警告

df.iloc[df_row_idx]['n_sites_recruiting'] = df.iloc[df_row_idx]['n_sites'] + 1

这不是正确的语法,您需要提供行和列的索引

df_col_idx =  df.columns.get_loc("n_sites_recruiting")
df_col_idx2 =  df.columns.get_loc("n_sites")
df.iloc[df_row_idx, df_col_idx] = df.iloc[df_row_idx, df_col_idx2] + 1
编辑: 简单地

甚至:

df.loc[:,'n_sites_recruiting'] = df.loc[:,'n_sites'] + 1

您需要使用
loc
。比如,
df.loc[df_row_idx,'n_sites_recruving']=…
谢谢这项工作,似乎是最简单的解决方案!仅当您希望将单个值(即df_row_idx的大小为1)赋值为True时,此选项才有效。它可以放在一个循环中,但我甚至没有考虑向量函数。我真是个不懂蟒蛇的人。
df.loc[:,'n_sites_recruiting'] = df.loc[:,'n_sites'] + 1