我正在尝试在熊猫数据框中设置一个值。
ZEROS = np.zeros((4,4), dtype=np.int)
df = pd.DataFrame(ZEROS, columns=['A1','B1','C1','D1'])
df.at[2,3] = 32
df
我不希望整个列都有NaN
,预期输出如下:
使用numpy我可以设置如下的值
ZEROS[1][3] = 44
输出:
array([[ 0, 0, 0, 0],
[ 0, 0, 0, 44],
[ 0, 0, 0, 0],
[ 0, 0, 0, 0]])
答案 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
另请参阅此帖子了解更多信息
答案 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