2017-04-04 69 views
1

我有一个数据框,根据一列的值(正数或负数)分成两个子集。对列操作和“从DataFrame中复制切片”的Python操作

比方说,一个列包含以下值:

1 
4 
9 
2 
1 

我基本上要在创建每个子集计算一个值和之间的差异列只是before.So它会在这里看到这样的信息这个:

n/a 
3 
5 
-7 
-1 

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

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) 

回答

2

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

欲了解更多信息,请参阅this post,特别是@Garrett提供的链接。