問題

我有一個包含多列和行的資料庫.我想在滿足列子集的某些標準的資料庫行中找到,如果滿足該標準,則更改該行中不同列的值.

我正在使用以下資料庫進行原型 "`

 df = pd.DataFrame([[1, 2], [4, 5], [5, 5], [5, 9], [55, 55]], columns=['max_speed', 'shield'])
df['frcst_stus'] = 'current'
df
 

"` 這給出了以下結果:

 max_speed   shield  frcst_stus
0   1   2   current
1   4   5   current
2   5   5   current
3   5   9   current
4   55  55  current
 

我想更改索引行2來讀取5,5,’hello’而不更改資料幀的其餘部分.

我可以在設定值時執行Pandas.loc文件中的示例.我可以設定與可呼叫條件匹配的行,列和行.但呼叫在單列或系列上.我想要兩個.

我找到了一些stackoverflow答案,它們使用loc在一個列上設定第二列中的值來回答問題.這不是我的問題.我想搜尋兩列資料.

以下允許我得到我想要的行: "`

 result = df[(df['shield'] == 5) & (df['max_speed'] == 5) & (df['frcst_stus'] == 'current')]
 

"` 我知道只是將等號(===’current’)更改為(=’current’)會給我一個錯誤.

當我在兩列上選擇時,我可以設定列(見下文),但兩列都設定. (‘arghh’),當我嘗試測試’max_require’的值時,我得到一個false不在索引錯誤中. "` df.loc [:,[‘max_require’,’frcst_stus’]] =’hello’

"`

我也收到一個錯誤,試圖用Python解釋布林問題.坦率地說,我還不明白整個超載.

我正在嘗試遵守格式化要求,如果我尖叫Stackoverflow的格式要求,請告訴我.

  最佳答案

如果需要透過掩碼m將不同的值設定為兩列:

 m = (df['shield'] == 5) & (df['max_speed'] == 5) & (df['frcst_stus'] == 'current')

df.loc[m, ['max_speed', 'frcst_stus']] = [100, 'hello']
 

如果需要透過掩碼m將相同的值設定為兩列:

 df.loc[m, ['max_speed', 'frcst_stus']] = 'hello'
 

如果需要透過掩碼m只設置一列:

 df.loc[m, 'frcst_stus'] = 'hello'
 

  相同標籤的其他問題

pandasloc