Pandas SettingWithCopyWarning错误:所有已知的解决方案似乎都失败了

时间:2020-09-28 06:22:51

标签: python pandas dataframe copy

根据我在Pandas SettingWithCopyWarning: I'm thoroughly confused中收到的回复以及在Pandas - Get first row value of a given column中找到的清晰解释,我认为我已经解决了所有SettingWithCopyWarning错误。不幸的是,他们回来了(Python 3.8.5),感谢您的帮助。我的数据帧df有一列 'SBPi_min_time',我称为t_min

  t_min
'SBPi_min_time'

df.head()
   SBPi_max_time  SBPi_max  SBPi_min_time  SBPi_min  delta_p
0         52.257   119.626         55.903   111.256    8.370
1         59.513   118.580         60.562   114.395    4.185
2         62.632   119.626         63.650   112.999    6.627
3         65.721   121.021         67.279   114.395    6.626
4         69.344   120.672         72.414   113.348    7.324

如果现在尝试将值从df的一行复制到前一行,则会收到臭名昭著的SettingWithCopyWarning。我尝试了5种不同的方法,并在每种情况下都遇到了错误。值得注意的是,第一种方法是我已发布链接的文章中推荐的方法:

df.iloc[i, df.columns.get_loc('SBPi_min_time')] = df.iloc[i+1, df.columns.get_loc('SBPi_min_time')]
df.iloc[i, df.columns.get_loc(t_min)] = df.iloc[i+1, df.columns.get_loc(t_min)]
df.iloc[i, 3] = df.iloc[i+1, 3]
df[t_min].iloc[i] = df[t_min].iloc[i+1]
df[t_min][i] = df[t_min][i+1]

如果有一种方法可以从 df[t_min][i+1]创建一个新对象(在本例中是一个浮点数),我可以这样做,然后将其设置为 df[t_min][i],但是似乎没有做到这一点的方法:

df_copy = df.copy(deep = True)
df[t_min][i] = df_copy[t_min][i+1]

给我同样的错误。我到底在做错什么,解决办法是什么?

非常感谢

托马斯·飞利浦

0 个答案:

没有答案