如何在熊猫中设置特定的单元格值?

时间:2017-10-28 22:51:40

标签: python pandas numpy

我正在尝试在熊猫数据框中设置一个值。

ZEROS = np.zeros((4,4), dtype=np.int)

df = pd.DataFrame(ZEROS,  columns=['A1','B1','C1','D1'])
df.at[2,3] = 32
df

enter image description here

我不希望整个列都有NaN,预期输出如下:

使用numpy我可以设置如下的值

ZEROS[1][3] = 44

输出:

array([[ 0,  0,  0,  0],
       [ 0,  0,  0, 44],
       [ 0,  0,  0,  0],
       [ 0,  0,  0,  0]])

2 个答案:

答案 0 :(得分:10)

使用pd.DataFrame.iat引用和/或分配单个单元格的序号位置。

ZEROS = np.zeros((4,4), dtype=np.int)

df = pd.DataFrame(ZEROS,  columns=['A1','B1','C1','D1'])
df.iat[2,3] = 32
df

   A1  B1  C1  D1
0   0   0   0   0
1   0   0   0   0
2   0   0   0  32
3   0   0   0   0

你也可以使用iloc但是iloc 可以像输入一样使用数组。这使iloc更灵活,但也需要更多开销。因此,如果您只想更改一个单元格...请使用iat

另请参阅此帖子了解更多信息

loc/iloc/at/iat/set_value

答案 1 :(得分:7)

使用iloc

df.iloc[2,3] = 32

print(df)
#   A1  B1  C1  D1
#0   0   0   0   0
#1   0   0   0   0
#2   0   0   0  32
#3   0   0   0   0

或者,如果您想按索引和列名称进行修改,请使用loc

df.loc[2, 'D1'] = 32