簡體   English   中英

Pandas在數據幀的單個列上進行邏輯索引以分配值

[英]Pandas logical indexing on a single column of a dataframe to assign values

我是一個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或變通方法中,這將是什么相同的代碼?

你的陳述不正確它應該是:

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時,你應該使用方括號[]而不是括號() ,這是一個函數調用。 查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM