首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:使用loc[]+iloc[]+loc[]更新中的单个值

Python:使用loc[]+iloc[]+loc[]更新中的单个值
EN

Stack Overflow用户
提问于 2022-09-09 14:53:40
回答 1查看 24关注 0票数 0

试图在dataframe中更新非常特定的值。首先查看索引中给定值的最后一行,然后选择该行的一列。但是,正如您所看到的,我无法更新它。我也尝试过使用df.at[],但我也无法使用,因为它没有给我提供我想要的实用程序。

我会很感激你的帮助。

代码如下:

代码语言:javascript
复制
df = pandas.DataFrame([['ABBOTSFORD', 427000, 448000],['ABBOTSFORD', 427000, 448000],
                    ['ABERFELDIE', 534000, 600000],['ABBOTSFORD', 427000, 66666]],
                   columns=['Locality', 2005, 2006])
                   
df.set_index('Locality', inplace=True)
 
print(df)
print('\n')
 
df.loc['ABBOTSFORD'].iloc[-1].loc[2006] = 3000
print(df.loc['ABBOTSFORD'].iloc[-1].loc[2006])
 
print('\n')
print(df)
 
Output: 
Locality     2005     2006        
ABBOTSFORD  427000  448000
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000
ABBOTSFORD  427000   66666
 
 
66666
 
 

Locality     2005     2006       
ABBOTSFORD  427000  448000
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000
ABBOTSFORD  427000   66666

在dataframe中更新特定值。

EN

回答 1

Stack Overflow用户

发布于 2022-09-09 14:58:34

你试图做的是棘手的,因为你有重复的指数。此外,您不能为分配而链接loc操作(您有更新副本的风险)。

据我所知,你想更新2006年的最后一个“阿博斯福德”。

您可以从numpy获得帮助来确定它的位置,以便能够使用iloc。对于列,使用get_loc

代码语言:javascript
复制
idx = np.arange(df.shape[0])[df.index=='ABBOTSFORD'][-1]
col = df.columns.get_loc(2006)

df.iloc[idx, col] = 3000

产出:

代码语言:javascript
复制
              2005    2006
Locality                  
ABBOTSFORD  427000  448000
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000
ABBOTSFORD  427000    3000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73664012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档