我有一個數據幀,其中特定列(y1)有3個可能的值:-9,1和2.熊貓,Python。替換列中的隨機數值子集
我想更改1000個值的隨機樣本其中原來是2至-9。
我已經試過這樣:
df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9"
,但它不工作。
我有一個數據幀,其中特定列(y1)有3個可能的值:-9,1和2.熊貓,Python。替換列中的隨機數值子集
我想更改1000個值的隨機樣本其中原來是2至-9。
我已經試過這樣:
df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9"
,但它不工作。
我想你的變化值需要index
第一然後分配:
有問題,如果過濾的a
的行數小於爲1000
,所以min
加入 - 因此它返回的長度a
如果length < 1000
:
a = df.loc[df.y1 == 2, 'y1']
df.loc[a.sample(min(len(a.index), 1000)).index, 'y1'] = -9
謝謝你,John Galt爲更好的解決方案,如果可能的話在y1
列沒有2
:
df.loc[(a if len(a.index) < 1000 else a.sample(1000)).index, 'y1'] = -9
因爲當你使用「==」爲索引,你只應該用正確的方式「=」,爲第二個來分配-9值
如果我理解正確的話,我想:df.loc [df.y1 == 「2」, 'Y1'] .sample(1000)=「 - 9」。但不起作用 – aspire57
a其實確實有兩個錯誤,而且我回答太快了,我應該先看過示例函數 –
這個作品,謝謝! – aspire57
小問題,當'a'是一個空數據框時會引發一個問題,你會更喜歡'(a如果len(a.index)<1000 else a.sample(1000))。index'而不是? – Zero