2016-07-06 17 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