如何在pandas中设置特定的单元格值?
我试图在pandas数据框中设置一个值。
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]])
回答:
使用 于参考和/或分配给一个小区的序号位置。
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
另请参阅此帖子以获取更多信息
已更新,pandas 0.20
因为ix
已弃用。这不但表明了如何使用loc,iloc,at,iat,set_value
,但如何实现,混合位置/标签基于索引。
loc
-基于标签
允许您将一维数组作为索引器传递。数组可以是索引或列的切片(子集),也可以是长度与索引或列相等的布尔数组。
特别说明:当传递标量索引器时,loc可以分配以前不存在的新索引或列值。
# label based, but we can use position values# to get the labels from the index object
df.loc[df.index[2], 'ColName'] = 3
df.loc[df.index[1:3], 'ColName'] = 3
iloc-基于位置
类似于,loc除了位置而不是索引值。但是,您不能分配新的列或索引。
# position based, but we can get the position# from the columns object via the `get_loc` method
df.iloc[2, df.columns.get_loc('ColName')] = 3
df.iloc[2, 4] = 3
df.iloc[:3, 2:4] = 3
at-基于标签的
作品与loc标量索引器非常相似。 无法对数组索引器进行操作。 能够!分配新的索引和列。
优势比loc是,这是速度更快。
缺点是不能将数组用于索引器。
# label based, but we can use position values# to get the labels from the index object
df.at[df.index[2], 'ColName'] = 3
df.at['C', 'ColName'] = 3
iat-基于位置的
原理相似iloc。 无法在数组索引器中工作。 不能!分配新的索引和列。
优势比iloc
是,这是速度更快。
缺点是不能将数组用于索引器。
# position based, but we can get the position# from the columns object via the `get_loc` method
IBM.iat[2, IBM.columns.get_loc('PNL')] = 3
set_value-基于标签的
作品与loc标量索引器非常相似。 无法对数组索引器进行操作。 能够!分配新的索引和列
优势超级快,因为几乎没有开销!
缺点由于pandas没有进行大量安全检查,因此开销很少。 使用风险自负。另外,这也不打算供公众使用。
# label based, but we can use position values# to get the labels from the index object
df.set_value(df.index[2], 'ColName', 3)
set_value同takable=True-位置,并根据
原理相似iloc。 无法在数组索引器中工作。 不能!分配新的索引和列。
优势超级快,因为几乎没有开销!
缺点由于pandas
没有进行大量安全检查,因此开销很少。 使用风险自负。另外,这也不打算供公众使用。
# position based, but we can get the position# from the columns object via the `get_loc` method
df.set_value(2, df.columns.get_loc('ColName'), 3, takable=True)
以上是 如何在pandas中设置特定的单元格值? 的全部内容, 来源链接: utcz.com/qa/399693.html