2016-07-06 60 views
1

我想在pandas dataFrame的特定單元格中設置一個值。我知道該行在哪個位置(例如,我甚至可以通過使用df.iloc[i]獲得該行),並且我知道該列的名稱,但我無法確定如何選擇該單元格,以便我可以爲它設定一個價值。在熊貓中切片和設置值,包含位置和標籤的組合

df.loc[i,'columnName']=val 

不會工作,因爲我想在i位置的行,不標記索引i。另外

df.iloc[i, 'columnName'] = val 

顯然不喜歡被給出列名。所以,在轉換成字典和後面的情況下,我該如何解決這個問題?非常感謝您的幫助,因爲pandas文檔中找不到任何有助於我的內容。

+0

嘗試'df.ix [i,'columnName'] = val' – EdChum

+0

給出一個關鍵字e 「i」的錯誤,我想是因爲'i'不在索引標籤中? –

+0

不應該失敗,請嘗試'df ['columnName']。iloc [i] = val' – EdChum

回答

1

您可以使用ix設置一個特定的細胞:

In [209]: 
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc')) 
df 

Out[209]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.363385 0.024520 
2 0.526718 -0.230459 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 

In [210]: 
df.ix[1,'b'] = 0 
df 

Out[210]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.000000 0.024520 
2 0.526718 -0.230459 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 

您也可以撥打iloc感興趣的山坳:

In [211]: 
df['b'].iloc[2] = 0 
df 

Out[211]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.000000 0.024520 
2 0.526718 0.000000 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 
1

你可以得到get_loc列的位置:

df.iloc[i, df.columns.get_loc('columnName')] = val