Python 对列的操作和 "copy of a slice from a DataFrame"警告

标签 python pandas dataframe

我有一个数据框,根据一列的值(正值或负值)将其分为 2 个子集。

假设一列包含以下值:

1
4
9
2
1

我基本上想在每个子集中创建一列,计算一个值与之前的值之间的差异。所以它会在这里给出如下内容:

n/a
3
5
-7
-1

然后我只想将值移到上面一行。我使用了下面的代码,最终给出了结果,但我总是收到这个我不明白的警告。 “尝试在 DataFrame 的切片副本上设置一个值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替” 你能帮忙吗?

df_left = df_s[df_s['Benchmark Sigma'] < 0]
df_right = df_s[df_s['Benchmark Sigma'] > 0]

df_left['Benchmark Sigma Interval'] = (df_left['Benchmark Sigma']-df_left['Benchmark Sigma'].shift(1))
df_right['Benchmark Sigma Interval'] = (df_right['Benchmark Sigma']-df_right['Benchmark Sigma'].shift(1))

df_left['Benchmark Sigma Interval']=df_left['Benchmark Sigma Interval'].shift(-1)
df_right['Benchmark Sigma Interval']=df_right['Benchmark Sigma Interval'].shift(-1)

最佳答案

此警告只是让您知道您可能正在修改 df 的副本而不是原始文件。根据我的经验,这通常是误报。如果您发现自己也遇到这种情况,可以关闭警告。

有关详细信息,请参阅this post ,尤其是 @Garrett 提供的链接。

关于Python 对列的操作和 "copy of a slice from a DataFrame"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203204/

相关文章:

python - 使用来自 Neupy 的 LMS 算法的溢出错误示例

python - 在 pandas 数据框中使用 for 循环迭代列

python - 线条颜色作为 pandas 数据框中列值的函数

r - 过滤一列中 > 0 的数据,其余列中 == 0 的数据

python - 如何使用元组数组查询 pandas DataFrame?

python - 即使使用 setSpacing(0),小部件之间也有空白空间

Python 目标系统

python - 如何使用 to_clipboard() 提供 DataFrame 的可复制副本

python - 使用 Pandas Python 操作 Dataframe

python - IDLE Python/PIL 模块 - 默认图像查看器