根据我在Pandas SettingWithCopyWarning: I'm thoroughly confused收到的回复和在Pandas - Get first row value of a given column找到的清晰解释,我认为我已经解决了所有设置中的CopyWarning错误。不幸的是,它们回来了(Python3.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
的一行复制到前一行,我会得到臭名昭著的设置WithCopyWarning。我已经尝试了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]
创建一个新对象(在本例中是一个float),我可以这样做,然后将 df[t_min][i]
设置为它,但似乎没有一种方法可以这样做:
df_copy = df.copy(deep = True)
df[t_min][i] = df_copy[t_min][i+1]
给了我同样的错误。我到底做错了什么,怎么解决
非常感谢
托马斯·菲利普斯
目前没有回答
相关问题 更多 >
编程相关推荐