如何在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

回到顶部