2015-06-18 107 views
2

我的R編程,並尋找類似的方式做這樣的事情在R:熊貓邏輯索引分配值

data[data$x > value, y] <- 1 

(基本上,採取的所有行x的列比一些值,並指定在這些行與Y列1)

值在大熊貓它似乎相當於會去是這樣的:

data['y'][data['x'] > value] = 1 

但是這給一個SettingWithCopyWarning。

我試過

等效的語句是:

condition = data['x']>value 
data.loc(condition,'x')=1 

但我很認真地困惑。也許我在R方面思考得太多,無法將我的頭圍繞在Python中發生的事情上。 在Python中這是什麼等效代碼或變通方法?

回答

0

你的說法不正確,它應該是:

data.loc[condition, 'x'] = 1 

例子:

In [3]: 

df = pd.DataFrame({'a':np.random.randn(10)}) 
df 
Out[3]: 
      a 
0 -0.063579 
1 -1.039022 
2 -0.011687 
3 0.036160 
4 0.195576 
5 -0.921599 
6 0.494899 
7 -0.125701 
8 -1.779029 
9 1.216818 
In [4]: 

condition = df['a'] > 0 
df.loc[condition, 'a'] = 20 
df 
Out[4]: 
      a 
0 -0.063579 
1 -1.039022 
2 -0.011687 
3 20.000000 
4 20.000000 
5 -0.921599 
6 20.000000 
7 -0.125701 
8 -1.779029 

當你正在下標,你應該用方括號[]而不是括號()這是一個函數調用的DF。請參閱docs