2017-04-04 39 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提供的鏈接。