Pandas 熊猫中的切片和设置值,位置和标签的组合

Pandas 熊猫中的切片和设置值,位置和标签的组合,pandas,Pandas,我想在数据帧中的特定单元格中设置一个值 我知道行在哪个位置(例如,我甚至可以通过使用df.iloc[I]获得行),我知道列的名称,但我无法确定如何选择单元格,以便为其设置值 df.loc[i,'columnName']=val 无法工作,因为我希望行位于位置I,而不是用索引I标记。也 df.iloc[i, 'columnName'] = val 显然,他不喜欢别人给他起一个列名。那么,除了转换成dict和back之外,我该怎么做呢?非常感谢您的帮助,因为我在pandas文档中找不到任何帮助。

我想在数据帧中的特定单元格中设置一个值

我知道行在哪个位置(例如,我甚至可以通过使用
df.iloc[I]
获得行),我知道列的名称,但我无法确定如何选择单元格,以便为其设置值

df.loc[i,'columnName']=val
无法工作,因为我希望行位于位置
I
,而不是用索引
I
标记。也

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

显然,他不喜欢别人给他起一个列名。那么,除了转换成dict和back之外,我该怎么做呢?非常感谢您的帮助,因为我在
pandas
文档中找不到任何帮助。

您可以使用
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

您可以使用get_loc获取柱的位置:

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

试试
df.ix[i,'columnName']=val
给出了一个关键错误
i
,我想是因为
i
不在索引标签中?这应该不会失败,试试
df['columnName'].iloc[i]=val
ix
在索引为整数时查找标签而不是位置。是的,非常有效,谢谢!