在Pandas中切片和设置值,使用位置和标签的组合

时间:2016-07-06 15:25:14

标签: pandas

我想在pandas dataFrame中的特定单元格中设置一个值。

我知道该行所处的位置(例如,我甚至可以使用df.iloc[i]来获取行),并且我知道列的名称,但我无法确定如何选择单元格,以便我可以为它设置一个值。

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

不起作用,因为我希望行位于i,而不是标记为索引i。还

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

显然不喜欢被赋予列名。所以,如果没有转换成字典和背面,我该怎么做呢?非常感谢,因为我在pandas文档中找不到任何可以帮助我的内容。

2 个答案:

答案 0 :(得分:2)

您可以使用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 :(得分:1)

您可以使用get_loc:

获取列的位置
df.iloc[i, df.columns.get_loc('columnName')] = val